开始正题,reactor 模式nodejs关于异步的本质,以及隐藏在此模式背后的故事。如单进程单线程的架构、非阻塞IO。最后看下整个nodejs平台。
IO很慢,相比于CPU的处理速度来说,在非密集型计算的应用场景下,IO是一个拖慢速度的瓶颈。当然,现在正火的深度学习可以一次跑上几个月。。。。这种计算密集型的应用场景下除外。
一个传统的阻塞型io的例子,
线程池中每个线程处理一个链接,上下文切换,读写等待。。。。。性能空闲了很多。
非阻塞IO
立即返回而不是等待数据读写完毕,如果数据读写出错则返回一个预定义的常量。类似于c语言中回调函数。
实现非阻塞IO的方法一:busy-waiting+polling loop
resources = [socketA, socketB, pipeA];
while(!resources.isEmpty()) {
for(i = 0; i < resources.length; i++) {
resource = resources[i];
//try to read
var data = resource.read();
if(data === NO_DATA_AVAILABLE)
//there