go net: (*ListenConfig).Listen Context行为未记录在文档中,

uqxowvwt  于 9个月前  发布在  Go
关注(0)|答案(3)|浏览(91)

你正在使用哪个版本的Go( go version )?

go1.17.6

这个问题在最新版本中是否重现?

是的。

你正在使用什么操作系统和处理器架构( go env )?

N/A

你做了什么?

查看了(*net.ListenConfig).Listen方法的文档。

你期望看到什么?

该方法具有以下签名:

func (lc *ListenConfig) Listen(ctx context.Context, network, address string) (Listener, error)

我期望看到关于当ctx参数完成时会发生什么的描述,以帮助了解#46520
Listen返回后,ctx是否被使用过?如果是典型的API,它不会被使用,但这似乎是一种将Context重新引入现有net.Listener接口的方式,所以我真的不知道。(我尝试阅读源代码,但是ctx参数通过许多辅助函数和网络抽象接口传递。)

你看到了什么?

完全没有提到ctx参数或其语义:
Listen在本地网络地址上进行广播。
有关网络和地址参数的描述,请参阅func Listen。
这个API是在CL 72810(Go 1.11)中添加的,用于#9661
(CC @ianlancetaylor@bradfitz@AudriusButkevicius)

e5njpo68

e5njpo681#

Listen 返回后,上下文参数(context argument)不再用于任何其他用途。它存在是为了允许早期返回DNS查找,因为像 internetSocket 这样的功能即使在 Listen 的特定情况下也不会使用上下文参数。

cotxawn7

cotxawn72#

我注意到DialContext也没有记录上下文参数是如何使用的(它在DialContext返回后也没有使用上下文做任何事情)。

pcww981p

pcww981p3#

我欢迎上下文的记录。就我个人而言,我不喜欢大Go生态系统倾向于在没有关于如何使用上下文的清晰文档的情况下抛出上下文。有时这会短暂地引起歧义,在这篇博客文章中提到过:

$x_{1}e^{0}f_{1}x$

相关问题