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

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

Go和Java使用用戶空間線程的事實(shí)是否就意味著您不能真正利用多核?

Go和Java使用用戶空間線程的事實(shí)是否就意味著您不能真正利用多核?

Go
ITMISS 2021-04-09 12:15:10
最近,我們一直在操作系統(tǒng)類中談?wù)摼€程,我想到了一個(gè)問題。由于Go(和Java)使用用戶空間線程而不是內(nèi)核線程,這是否意味著您不能有效利用多個(gè)內(nèi)核,因?yàn)镺S僅將CPU時(shí)間分配給進(jìn)程,而不是線程本身?
查看完整描述

3 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

是什么讓您認(rèn)為Go使用用戶空間線程?

沒有。它使用OS線程,并且可以利用多個(gè)內(nèi)核。

您可能會對以下事實(shí)感到困惑:默認(rèn)情況下,Go僅使用1個(gè)線程來運(yùn)行您的程序。如果啟動兩個(gè)goroutine,它們將在一個(gè)線程中運(yùn)行。但是,如果一個(gè)I / O的goroutine塊創(chuàng)建了第二個(gè)線程,并繼續(xù)在新線程上運(yùn)行另一個(gè)goroutine。

如果您確實(shí)想解鎖全部的多核功能,請使用該GOMAXPROCS()功能。

runtime.GOMAXPROCS(4); //somewhere in main

現(xiàn)在,您的程序?qū)⑹褂?個(gè)OS線程(而不是1個(gè)),并且將能夠完全使用例如4個(gè)核心系統(tǒng)。


查看完整回答
反對 回復(fù) 2021-04-26
?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

我假設(shè)“用戶空間線程”是指(例如)Go的goroutine。

的確,使用goroutines進(jìn)行并發(fā)要比設(shè)計(jì)(通過手工和科學(xué)計(jì)算)為OS線程分配工作單元的專用算法效率低。

但是:每個(gè)Go程序都位于一個(gè)環(huán)境中,旨在解決特定問題。可以為環(huán)境對Go程序提出的每個(gè)請求啟動一個(gè)新的goroutine。如果環(huán)境正在向Go程序發(fā)出并發(fā)請求,則即使Go程序僅使用1個(gè)OS線程,使用goroutines的Go程序也可能比串行程序運(yùn)行得更快。goroutine能夠以更高的速度處理請求的原因(即使僅使用1個(gè)OS線程)是因?yàn)?,?dāng)與A關(guān)聯(lián)的環(huán)境部分暫時(shí)無法執(zhí)行時(shí),Go程序會自動從goroutine A切換到goroutineB?;貞?yīng)。

但是,是的,的確,使用goroutine并將它們自動分配給多個(gè)OS線程確實(shí)比設(shè)計(jì)(通過手工和科學(xué)計(jì)算)為OS線程分配工作單元的專用算法效率低。


查看完整回答
反對 回復(fù) 2021-04-26
  • 3 回答
  • 0 關(guān)注
  • 251 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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