1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
runtime.GOMAXPROCS
控制將創(chuàng)建多少個(gè)操作系統(tǒng)級(jí)別的線程來(lái)運(yùn)行程序的goroutine(以及為其提供動(dòng)力的運(yùn)行時(shí))。(運(yùn)行時(shí)本身將為其自身創(chuàng)建更多線程,但這是不重要的。)
基本上,這就是所有將要發(fā)生的事情。
但是據(jù)推測(cè),您打算提出類似的問題,例如“這將如何影響程序性能?”,對(duì)嗎?如果是,答案是“取決于”。我不確定您是否有機(jī)會(huì)使用只有一個(gè)CPU和一個(gè)核心的系統(tǒng)(基本上是大多數(shù)消費(fèi)級(jí)IBM PC兼容計(jì)算機(jī),直到Pentium?CPU一代為止,這種計(jì)算機(jī)都具有所謂的“超線程”技術(shù)),但這些系統(tǒng)通常在“單核”上運(yùn)行數(shù)百至數(shù)千個(gè)OS線程(該術(shù)語(yǔ)實(shí)際上在主流中并不存在,但可以)。
要考慮的另一件事是您的程序不是孤立運(yùn)行的:同一程序上還有其他程序運(yùn)行,并且內(nèi)核本身也有多個(gè)內(nèi)核線程。您可以使用top
或之類的工具htop
來(lái)評(píng)估系統(tǒng)當(dāng)前正在所有內(nèi)核上調(diào)度的線程數(shù)。
到這個(gè)時(shí)候,您可能想知道為什么Go運(yùn)行時(shí)默認(rèn)創(chuàng)建與goroutine一樣多的線程來(lái)為goroutine提供動(dòng)力。
大概是由于一個(gè)簡(jiǎn)單的事實(shí),在典型的服務(wù)器端工作負(fù)載中,您的程序?qū)⒊蔀椤爸饕绦颉?。換句話說(shuō),它的線程與其他進(jìn)程和內(nèi)核的線程的競(jìng)爭(zhēng)將相當(dāng)?shù)汀?/p>
- 1 回答
- 0 關(guān)注
- 336 瀏覽
添加回答
舉報(bào)