Node.js vs Erlang
- cooperative scheduling algorithm : the program explicitly yields the CPU for the next task
- same as old operating systems: MacOS 9, Windows 95 running legacy 16-bit code, MS-DOS and so on.
- advantages: easy to adapt existing languages and systems to the method; highly efficient in throughput; allows you to "pack" lots of work into a single process.
- weakness: if one of the tasks in the task queue monopolizes the CPU, hangs or blocks, then the impact is worse throughput, higher latency, or a deadlocked server.
- Erlang runtime:
- preemptively: An internal funcall counter measures "reductions" and once 2000 of these has been used, the process is forced off the CPU and the next one is switched in.
- same as modern time-sharing operating systems: UNIX, Windows NT+