第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go的多線程與pthread或Java線程之間有什么區(qū)別?

Go的多線程與pthread或Java線程之間有什么區(qū)別?

Go
肥皂起泡泡 2021-04-09 14:15:29
Go的多線程方法與其他方法(例如pthread,boost :: thread或Java Threads)有什么區(qū)別?
查看完整描述

3 回答

?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

從第3天教程引述<-閱讀此內(nèi)容以獲取更多信息。

Goroutines根據(jù)需要多路復用到系統(tǒng)線程上。當goroutine執(zhí)行阻塞系統(tǒng)調(diào)用時,不會阻塞其他goroutine。

在某些時候,我們將對與CPU綁定的goroutine進行相同的操作,但是現(xiàn)在,如果要使用用戶級并行性,則必須設置$ GOMAXPROCS?;蛑码妑untime.GOMAXPROCS(n)。

goroutine不一定與OS線程相對應。它可以具有較小的初始堆棧大小,并且堆棧將根據(jù)需要增長。

需要時,可以將多個gorouitines復用到單個線程中。

更重要的是,該概念如上所述,goroutine是一個順序程序,可能會阻塞自身,但不會阻塞其他goroutine。

Goroutines在gccgo中作為pthreads實現(xiàn),因此它也可以與OS線程相同。它將OS線程的概念與我們在編程時對多線程的思想分開。


查看完整回答
反對 回復 2021-04-26
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

在參考編譯器(5g / 6g / 8g)中,主調(diào)度程序(src / pkg / runtime / proc.c)創(chuàng)建N個OS線程,其中N由runtime.GOMAXPROCS(n)(默認值為1)控制。每個調(diào)度程序線程都會從主列表中拉出一個新的goroutine并開始運行它。goroutine將繼續(xù)運行,直到進行系統(tǒng)調(diào)用(例如printf)或在通道上進行操作為止,此時調(diào)度程序?qū)@取下一個goroutine并從其停止的那一點開始運行它(請參閱gosched()調(diào)用src / pkg / runtime / chan.c)。

出于所有目的和目的,調(diào)度是使用協(xié)程實現(xiàn)的??梢允褂胹etjmp()和longjmp()在C語言中編寫相同的功能,Go(以及其他實現(xiàn)輕量級/綠色線程的語言)只是為您實現(xiàn)了自動化。

輕量級線程的好處在于,因為它是所有用戶空間,因此創(chuàng)建“線程”非常便宜(分配小的默認堆棧),并且由于線程之間相互通信的固有結構而非常高效。缺點是它們不是真正的線程,這意味著單個輕量級線程可以阻止整個程序,即使看起來所有線程都應同時運行。


查看完整回答
反對 回復 2021-04-26
  • 3 回答
  • 0 關注
  • 338 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號