lua中"協程"和erlang"進程",go等指令碼 與 java 中“多線程”的對比理解

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Lua,Erlang,go這種只有協程或者所謂的輕量級"進程"的語言,雖然它們讓程式執行變得可以控制,假如:他們即使一下子開了1000個線程,實際上一次只能運行1個線程,本身並沒有利用多核的優勢。  假如:讓這幾種語言和具有真正線程概念能利用多核cpu的java對比下。  如果一下子都處理1000個任務,因為前幾個語言沒有利用多核cpu,那處理速度會不會比java慢很多呢? 這個怎麼理解。

找了很多資料,他們只介紹了:lua的協程或者Erlang的進程,只是說讓程式變得可控這種優勢,但是卻沒介紹:如果這種不是真正的“線程”的語言來處理任務時,是否會處理的緩慢等問題。


可以查看lua原始碼,比如:lua的協程,我可以找到lua_newthread這個實現,實際用的堆棧來實現的線程.

而且:雲風的skynet這個伺服器端架構,利用actor模型,裡面主要就是用的協程,實際開發中,並沒有我說的那個問題。所以我想知道:我哪裡理解錯了。

有種BUG叫設計如此  12:55:05
你的疑問是什麼啊?

有種BUG叫設計如此  12:57:10
不能利用多和資源是吧

有種BUG叫設計如此  12:58:08
最簡單的寫個程式試試就知道了,協程裡面寫死迴圈看,能不能把cpu跑到100%

Lukey  13:01:41
我就在用go

Lukey  13:01:45
確實不錯

王哲小號  13:02:20
lua的“協程”並不是線程,說到底,這1000個協程一定是順序執行的,嚴格來說,它是在某個線程環境下執行的,除掉本身的消耗,它的消耗另外一部分在管理這些協程以及代碼跳轉,至於是否能夠利用到多核,取決於上層的進階語言對於線程的效能能否較好的分攤到多核上去。

王哲小號  13:03:21
golang在設計之初就是針對多核的,所以上層語言的設定就針對多核下的環境,golang中很多東西都針對多核進行了特別的最佳化。

海浪  13:07:03
我想問的是。。。你糾結攜程是不是利用多核,是要幹啥

王哲小號  13:07:42
這個是在語言設計層面需要考慮的事情

有種BUG叫設計如此  13:08:06
邏輯上也需要考慮 的

王哲小號  13:08:07
至今還沒有看到過哪種語言還需要你手動考慮到多核的

王哲小號  13:08:24
比如?

有種BUG叫設計如此  13:08:56
至少要知道才知道什麼時候用進程,什麼時候用線程,什麼時候用協程啊

海浪  13:09:35
你連這都不知道。。。。。

王哲小號  13:09:49
這個我覺得更多的程式效能上面的事情

王哲小號  13:09:57
而不是考慮多核

王哲小號  13:10:25
一個問題不只有一種解,我們要的是最優解

有種BUG叫設計如此  13:10:45
如果你不知道一個語言的協程是不是可以指派到多核處理,那就是連那些也不知道唄

王哲小號  13:10:48
進程、線程這種解是不是最優,我覺得具有一定的討論餘地

有種BUG叫設計如此  13:18:28
一個lua vm對應一個os 線程

有種BUG叫設計如此  13:18:49
skynet 應該是用的多個lua vm利用的多核資源 

北京|欠費  13:32:23
是否使用多核 編譯器上面考慮的吧 你在語言層面 考慮沒有意義。

有種BUG叫設計如此  13:41:23
我覺得不管是編輯器語言層面,還是架構層面,還是邏輯層面,都需要考慮,才能寫出好程式 











聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.