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

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

強制goroutine進入同一線程

強制goroutine進入同一線程

Go
子衿沉夜 2021-04-07 15:14:41
有沒有辦法確保goroutine僅在特定的OS線程中運行?例如,當GUI操作必須在GUI線程中運行時,但是可能有多個goroutine運行GUI代碼。GOMAXPROCS(1) 從技術上講可以完成這項工作,但是這違背了多線程的目的。LockOSThread() 也可以工作,但是這也會阻止其他任何goroutine在該線程中運行。有沒有辦法做到這一點,還是所有需要相同線程的東西都必須在同一個goroutine中運行?
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

據我所知,目前還不是。我認為執行此操作的“類似方式”將是編寫一個運行在GUI線程中的Goroutine,并處理通過通道發送的其他goroutine的請求。例如,您可以讓它從接受函數指針的通道中讀取并執行這些函數。


查看完整回答
反對 回復 2021-04-26
?
月關寶盒

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

你為什么要這樣做?我相信runtime.LockOSThread()如果要從使用線程本地存儲的C代碼創建庫綁定是必要的。否則,只需讓調度程序為您多路復用goroutine。

請注意,runtime.LockOSThread()只有在調用之前,它才會阻止其他goroutine在該線程中運行runtime.UnlockOSThread()。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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