首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go中的selectnbrecv函数到底是做什么的?

Go中的selectnbrecv函数到底是做什么的?
EN

Stack Overflow用户
提问于 2020-12-12 14:30:56
回答 1查看 263关注 0票数 1

我是逆向工程一个Go二进制,并遇到了函数selectnbrecv。然而,我不理解文档。如果有人能向我解释这个函数的上下文和操作,我会很感激的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 14:44:41

它是用于从通道接收非阻塞接收的Go运行时内部执行程序:

当通道有任何事件时,selectnbrecv函数返回true,否则返回false (对于nil通道,返回false):它在通道上接收并将接收到的数据写入v (如果&v不是零,则接收到的数据将被忽略)。如果没有可用的数据,则返回false。否则,如果通道关闭,则为零v并返回true。否则,使用数据填充v并返回true

代码语言:javascript
复制
// compiler implements
//
//  select {
//  case v = <-c:
//      ... foo
//  default:
//      ... bar
//  }
//
// as
//
//  if selectnbrecv(&v, c) {
//      ... foo
//  } else {
//      ... bar
//  }
//
func selectnbrecv(elem unsafe.Pointer, c *hchan) (selected bool) {
    selected, _ = chanrecv(c, elem, false) // false for non blocking
    return
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65266072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档