最近,我被注入了Node病毒,它正在程序世界中快速传播。
我被它的“非阻塞IO”方法所吸引,确实尝试了一些程序。
然而,目前我还无法理解某些概念。
我需要用通俗易懂的术语来回答我的问题(我来自Java背景)。
1. 多线程和非阻塞IO。
让我们考虑一个实际情况。比如说,我们有一个网站,用户可以注册。以下是代码。
..
..
// Read HTTP Parameters
// Do some Database work
// Do some file work
// Return a confirmation message
..
..
在传统的编程语言中,上述过程按顺序进行。如果有多个注册请求,Web服务器会创建一个新线程,然后就成为历史了。当然,程序员可以创建自己的线程来同时处理第2行和第3行。
在Node中,我理解的是,第2行和第3行将并行运行,而程序的其余部分则被执行,解释器每隔“x”毫秒轮询第2行和第3行。
现在我的问题是,如果Node是单线程语言,那么第2行和第3行的工作是什么,而程序的其余部分正在被执行?
2. 可扩展性
我最近读到LinkedIn已经将Node用作其移动应用的后端,并取得了巨大的改进。
有人能解释一下它如何产生如此大的影响吗?
3. 在其他编程语言中的应用
如果有人声称Node在性能方面有很大的优势,那么为什么其他编程语言没有采用这种非阻塞IO的范例呢?
我相信我肯定漏掉了一些东西。只有您能够解释并提供一些链接,这将非常有帮助。
谢谢。