我最近一直在开发Node.js,对于事件循环的运作有了很好的理解。由于我有JavaScript的经验,使用Node对我来说是有道理的,但我想知道,有没有人放弃使用多线程系统而改用异步来提高性能?或者选择使用异步而不是多线程来提高性能?
在现实生活中,异步非阻塞I/O胜过多线程的真实案例有哪些呢?
在现实生活中,异步非阻塞I/O胜过多线程的真实案例有哪些呢?
编程更容易,因为您不需要管理多个进程/线程之间的一致性/数据交换。
在创建简单的Web应用程序时,这种模型没有真正的优势,但是当有一个服务器同时管理多个连接,并且传递的数据在某种程度上被绑定在一起时,就会有优势。
从性能方面来看,有一些优点,因为具有多个线程/进程往往比单个线程使用更多的内存。
简单的数学:每个线程处理一个连接,每个线程需要1MB的RAM,很容易计算出您可以在一台计算机上拥有多少连接。使用node.js,您只需一个进程即可处理多个连接,并且它需要20MB的RAM和每个新连接4kb。我想您已经明白了。
异步I/O并不更快,但它可以帮助您在同时执行相同任务的情况下消耗更少的资源。