亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Go運行時會創建操作系統線程(M)嗎?

Go運行時會創建操作系統線程(M)嗎?

Go
慕田峪7331174 2023-08-21 14:45:31
numLogicalProcessorsIntel core i7 上是8(2 X 4 個物理核心)。Linux操作系統。因此,八個操作系統線程(M)可以并行工作。Go 運行時可以在我的 Go 程序中分配八個上下文(P1, P2.... P8- runtime.GOMAXPROCS(numLogicalProcessors))。Go 遵循M:N線程模型,其中N是操作系統線程,M是 Go 程序的 go 例程。操作系統調度程序調度操作系統線程。線程狀態是WAITING, RUNNABLE& EXECUTING。Go 調度程序安排 Go 例程。Go 例程狀態是WAITING, RUNNABLE& EXECUTING。Goroutine 是一個用戶級線程。Go 程序的運行時是否顯式創建這八個操作系統線程(M)?在將每個上下文(P)分配給每個操作系統線程(M)之前?如果操作系統線程(M1)被操作系統調度程序搶占(由于時間片),那么goroutine調度程序(P1)如何使用LRQ管理goroutine的狀態G1?是否P1從操作系統收到狀態已更改的通知M1?
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

  1. 是的,Go調度程序啟動執行線程。可以使用runtime.GOMAXPROCS檢查或更改它們的數量。

  2. 不,操作系統搶占對于正在運行的進程是透明的。從 1.14 版本開始,Go 運行時可以搶占 Go 例程,但這是為了避免通過緊密循環鎖定線程。它與操作系統搶占無關。


查看完整回答
反對 回復 2023-08-21
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號