gpt4 book ai didi

sockets - 如何处理getaddrinfo和线程安全?

转载 作者:行者123 更新时间:2023-12-04 13:23:19 24 4
gpt4 key购买 nike

我正在将getaddrinfo用于与IPv6相关的C项目。我计算机上的“man getaddrinfo”(uname -a:3.5.0-23)仅表示它是“可重入”。所以我猜这不是线程安全的。

在需要线程安全的情况下,该如何处理?我也检查了UNP,但似乎没有提供具体答案。非常感谢。

最佳答案

getaddrinfo()确实是线程安全的。这是RFC 3493 Section 6.1必需的:

Functions getaddrinfo() and freeaddrinfo() must be thread-safe.



在某些平台上, gethostbyname()是线程安全的,但在其他平台上则不是。并非所有平台上都存在的 gethostbyname()是可重入的。如果您在同一线程中调用 gethostbyname(),然后再次调用 gethostbyname(),则第一次调用中的数据将被第二次调用中的数据覆盖。这是因为 gethostbyname()通常在内部使用静态缓冲区,这就是为什么您必须在再次调用 gethostbyname()之前复制数据。 getaddrinfo()不会遇到该问题,因为它每次被调用时都会分配一个新的 addrinfo结构。

关于sockets - 如何处理getaddrinfo和线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com