3 ms·
"Pass it over to some other thread" What you are suggesting here is exactly what Erlang provides for you. Each connection is a light-weight process inside the
by WALoeIII 16y ago
"Pass it over to some other thread"
What you are suggesting here is exactly what Erlang provides for you. Each connection is a light-weight process inside the VM. The VM then schedules these Erlang processes against native threads. The difference is Erlang has perfected and proven that it can do this reliably over 20 years of development. You would be implementing this by hand, and guaranteed to screw up because its a very hard problem and you are not the smartest person in the world.
Hybrid solutions with Evented I/O and Multi-threading end up being the solution, Erlang is a hybrid out of the box.
- axod 16y agoI have implemented it. It works well. You don't have to be the smartest person in the world to not screw up elementary programming problems. Mibbit handles a few million users without issue on a few VPSes. Erlang "doing it for me" isn't going to be anywhere near as efficient as me doing it myself. I'm probably not the smartest person in the world, but I'm certainly smart enough to write a comet/web server that's fast enough. I guess I'm not going to convince anyone here shrug. If you believe Erlang is a magic bullet great for you.
- lzimm 16y agoTotally agree. Since when did a work queue/thread pool thing become anything beyond intro to systems work? Furthermore, I don't know where everyone gets off saying erlang is so fast either: I'm not sure where things are now, but last time I checked, their scheduling algorithms were leaving quite a lot on the table, standing to benefit quite substantially from even the most basic operations and logistics knowledge.
- revoltingx 16y agoUgh, because you'd have to be pretty stupid to try to implement what Erlang/OTP has yourself. Yeah it's easy, but it'll get pretty hairy once you integrate hot-code updates, complex/simple CPU usage, load distribution, etc (i.e. you can write your app single threaded, then run 4 erlang VMS and distribute the load between all four of them.) The ability to easily swap between parallel and sequential functions easily, cross-process/cross-network seamless communication, etc. All of this without ever having to restart the VM or having 'downtime.' The point of Erlang is that it makes all of this so easy that you don't even think about it. It's the scripting language of parallel computing. You can rapidly prototype the app using the built-in tools and fine-tune whatever needs to be refined with C or better parallel algorithms or both.