有一个节点教程指出:
节点是一种无阻塞I/O系统.如果有一个任务消耗时间m,另一个任务消耗时间n(m'<'n).then,则阻塞I/O m+n中的总消耗时间为'm+n‘,在节点中为n。
但是,因为javascript是一种单线程语言。我认为这不会减少任务的所谓事件循环的时间,对吗?
在遮罩下,是否都是因为节点使用C/C++多线程来实现的。
好的,.My的主要混淆是I混乱I/O消耗时间包括在javascript计算中。
发布于 2018-09-13 08:06:47
是。Javascript是一个单线程的,但具有非阻塞IO实现。上面的行意味着您必须从服务器获得HTTP响应,服务器是使用计算机的网络接口的IO,所以当HTTP响应出现时,线程是空闲的( CPU上没有计算,CPU线程是空闲的),所以它可以继续执行其他任务--可能会呈现页面。
挂起Javascript线程的唯一方法是更高的执行率。我觉得你在做某种大规模的计算。在这种情况下,是的,你的进程被阻止了。但这不是IO (输入或输出)。
因此,您对IO非阻塞和CPU线程阻塞感到困惑。
发布于 2018-09-13 08:05:14
节点,基本上不会在减少单个任务的执行时间方面发挥主要作用,但它类似于并行处理。这意味着它不会等待其他任务的完成,并且可以同时执行多个任务。正如您所知道的,多个线程同时执行以使用最大cpu和内存(以毫秒为单位),因此我们将感觉到所有线程都同时执行。
https://stackoverflow.com/questions/52309044
复制相似问题