84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
很久以前只有单线程后来发展成多线程而现在单线程又开始流行nodejs
1现在的单线程的语言和最早的单线程有什么区别2还有多线程是否依然在流行,会否被单线程取代?
学习是最好的投资!
最早的单线程都是同步的代码,效率非常低,程序一直阻塞等待同步结果。 但是现在说的单线程,例如nodejs, 却是异步的,不会等待调用结果,转而去执行另外的事情,当调用结果返回之后再继续执行获取结果之后的程序。
现在
nodejs
多线程当然流行啦,多线程的程序的效率在并发量高的时候比单线程当然高许多,还有任务切分的时候也有优势。当然单线程为了充分利用机器资源,也开发了利用cpu多核的idea。 例如nodejs的cluster模块。 但是cluster模块虽然利用多核起了核数对应的进程数,然而每个进程都是相互独立的,共享一个端口。但是如果是java等多进程的程序的话,进程是有共享的资源的,这样占用的内存会少。
cluster
各有优势,只会各自弥补,向前发展。可能会出现新的模式来取代吧!个人观点。 希望对你有帮助!!
附 cluster的示例
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); } else { // Workers can share any TCP connection // In this case it is an HTTP server http.createServer((req, res) => { res.writeHead(200); res.end('hello world\n'); }).listen(8000); }
该程序会起和cpu核数相对应的node进程,监听在8000端口
最早的单线程都是同步的代码,效率非常低,程序一直阻塞等待同步结果。 但是
现在
说的单线程,例如nodejs
, 却是异步的,不会等待调用结果,转而去执行另外的事情,当调用结果返回之后再继续执行获取结果之后的程序。多线程当然流行啦,多线程的程序的效率在并发量高的时候比单线程当然高许多,还有任务切分的时候也有优势。当然单线程为了充分利用机器资源,也开发了利用cpu多核的idea。 例如
nodejs
的cluster
模块。 但是cluster
模块虽然利用多核起了核数对应的进程数,然而每个进程都是相互独立的,共享一个端口。但是如果是java等多进程的程序的话,进程是有共享的资源的,这样占用的内存会少。各有优势,只会各自弥补,向前发展。可能会出现新的模式来取代吧!个人观点。 希望对你有帮助!!
附
cluster
的示例该程序会起和cpu核数相对应的node进程,监听在8000端口