Go中,使用runtime Gosched,time Sleep哪個效能更好?

時間 2021-09-10 08:12:25

1樓:成雋

sleep不精確啊。https://

這個bug已經留了2個大版本還沒解決。

2樓:假裝懂程式設計

從cpu利用率來說runtime.Gosched應該更好吧,都是讓出cpu,runtime.Gosched讓出後,後續交給go本身的runtime去排程,不需要像sleep那樣自己定義time,runtime去排程的話,精準度應該比人為更好,比如你怎麼知道讓你的程式睡眠多少,都是乙個大概值,當你通過runtime.

Gosched讓出cpu的時候,可能此時你的g已經被安排在了下乙個排程。但是假設在你剛好sleep的時候,cpu也沒其他啥事,只能根據你設定的時間,幹等你了,利用率不是很高。

從業務角度來說,不管是runtime.Gosched還是sleep,你怎麼能保證在cpu切換來的時候,能到達你需要的狀態呢,這個是實際業務需要思考的。

3樓:葉東富

go在1.13版本及之前,沒有實現搶占式排程,假設你在乙個單CPU機器上執行,有乙個計算密集型任務,會一直計算3秒鐘,那麼在計算開始之後,這個協程會一直占用CPU資源,同乙個程序下的其他協程不會被排程。如果你在計算中間,加入runtime.

Gosched呼叫,則可以出讓CPU,讓其他協程執行。你也可以呼叫time.Sleep出讓CPU,但是runtime.

Gosched的語義會更好,如果有其他協程要執行,則讓給其他協程執行,如果沒有,自己還會繼續執行。

在1.14版本實現了搶占式排程以後,就不再需要runtime.Gosched了。

makefile 中使用 gcc,make編譯之後在終端得到cc

qin meng makefile裡有隱含規則和顯式規則兩種,顯式規則就是我們通常寫的這種,隱含規則就是make對於各種檔案的隱含編譯編譯規則,對於 c檔案它的隱含規則是這樣的 o c CC CFLAGS CPPFLAGS c o 除了 c還有 cc C p l y等等許多語言檔案的隱含推導規則,詳...

在VS code中 使用Jupyter notebook如何拆分cell?

jerry hao 這個問題的答案是這樣的 vscode從1.46版開始引進了一種叫Notebook的文件,主要是用來處理github的Issue,他看起來很像Jupyter Notebook,但後者目前是通過vscode python外掛程式來支援的。你說的那個拆分單元格是為Notebook文件用...

如何看待 Node js 中使用 TypeScript 的趨勢?

我發覺目前使用TypeScript 的程式設計師可分為一下3種 1.是後端程式設計師。寫前端純粹是被安排過來寫的,自己更喜歡寫後端,用自己熟悉的語法寫起來當然舒服 2.沒有後段經歷的程式設計師。發現TypeScript 有靜態分析加持,很爽很開心。3.Codebase 已經被前兩者寫了,只能接著用已...