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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Go 里面的 channel 最长可以阻塞多少数据呢?
未分類
14 11 月 2020

Go 里面的 channel 最长可以阻塞多少数据呢?

Go 里面的 channel 最长可以阻塞多少数据呢?

資深大佬 : sunshinev 3

比如

ch := make(chan int32,1)

ch <- 1 ch <- 2 // 这条记录就开始阻塞了,

// 如果继续 ch <- 3

ch <- 4

那么最长可以保持多长的数据队列呢?

大佬有話說 (3)

  • 資深大佬 : BoarBoar

    蹲一个回答,盲猜应该是爆内存为止

  • 資深大佬 : loading

    写一段测试一下就好了,二分法学过吧,你用二次幂不就行了。

  • 資深大佬 : CEBBCAT

    读过源码之后我简单总结一下( go1.14.4 darwin x86_64 ):

    – 元素大小不能大于 1<<16
    – size 不能超过 uint() 能接受的上限(我这里好像 uint 的跨度和 int 的跨度是一样的,都是 64 位)
    – 元素大小*chan 尺寸要能经过 runtime/internal/math 中 MulUintptr 的检查(这段逻辑有点难读,我英文一般)

    还是看代码吧:

    https://gist.github.com/Zhang-Siyang/364b512192275fa9d04978353b5d4443

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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