如下面这段常见的代码:
var http =require('http'); http.createServer(function(req,res){ //XXXX mycode here }).listen(3000);
假如有很多请求同时到达,那么nodejs的单线程如何处理呢?是不是等前面那个请求处理完再接受下一个请求?看起来应该不是的,如果是这样,如果处理的逻辑复杂,就显得慢了。但如果在中间暂停而跑到前面去执行,不是可能产生数据冲突的问题吗?这类似java的线程安全一样。比如下面:
var http =require('http');var myVar=1; http.createServer(function(req,res){ myVar=myVar+1; //XXXX mycode here; var k=myVar; if(k==myVar){ XXXX; console.log('ok'); } }).listen(3000);
显然如果用刚刚的逻辑,那么有可能不输出OK来。
jeck猫
相关分类