跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教各位大佬, chan <- 1 阻塞和阻塞结束的时候, goroutine 在干嘛?
未分類
20 11 月 2020

请教各位大佬, chan <- 1 阻塞和阻塞结束的时候, goroutine 在干嘛?

请教各位大佬, chan <- 1 阻塞和阻塞结束的时候, goroutine 在干嘛?

資深大佬 : koujyungenn 3

看了 MPG 模型,有些细节还是没懂。

假设 chan 是无缓冲通道,假设 G1 往 chan 里扔数据阻塞了。

此时会触发 Go 的 HandOff 机制,将 P1 detach()到其他 M 上吗?

如果会,过段时间另一个协程 G2 从 chan 里取数据,G1 的阻塞结束。G1 会直接进入某个 P 的协程队列尾(有空闲 P)或全局协程队列尾(无空闲 P)吗?还是说插队回到 P1 的队首?

还是说以上都不对,是另外一种做法?

大佬有話說 (2)

  • 資深大佬 : xiaohanliang

    (我的一些理解, 错了欢迎指正)

    Q: 此时会触发 Go 的 HandOff 机制,将 P1 detach()到其他 M 上吗?

    A: 不会, 这个 G 会被打包成 sudog, 绑定在这个 chan 的相关 sudog 队列上, 等到下次有人从这个 chan 里取数据, 就遍历这个 sudog 队列, 找到这个沉睡的 sudog, 把里面的 G 唤醒, 再放到 P 上去运行

  • 主 資深大佬 : koujyungenn

    @xiaohanliang #1 嗯….sudog,对于我来说是个新东西,得去了解下了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具