很久以前只有单线程后来发展成多线程而现在单线程又开始流行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埠