gpt4 book ai didi

c++ - 这是 pthread C++ 程序的不可移植错误吗

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:00 25 4
gpt4 key购买 nike

我正在为 pthread C++ 程序编写代码。

我得到错误: “pthread_getunique_np”未在此范围内声明

pthread_getunique_np 或带有“*np”的其他程序不可移植。

我无法从网上的帖子中找到解决方案。

我知道 _np 表示它不是 POSIX 标准。

如何解决这个问题?我需要包含一些头文件或其他替代品吗?

谢谢

最佳答案

正如 Martin 所说,在许多系统上,您可以只使用线程的 pthread_t 作为唯一标识符。您可以使用 pthread_self(3) 检索它,这是 POSIX。您可以使用函数 pthread_equal(3) 来测试两个 pthread_t 是否等价。

pthread_t threadID = pthread_self();
if (pthread_equal(threadID, someOtherID) != 0)
/* Branch based on being the same thread */
else
/* Branch based on being different threads */

据我所知,pthread_getunique_np() 返回一个唯一的整数 ID,这与使用 pthread_t 作为标识符不同。在许多系统上,pthread_self(3) 和 f pthread_getunique_np() 返回的值是相同的。事实上,您需要 pthread_t 来获得唯一的整数。

无论哪种方式,pthread_self(3) 都需要返回调用它的线程的 ID,所以我相信您应该能够按照自己的方式使用这个可移植函数。

(关于 pthread_getunique_np() 的信息来自 IBM )

关于c++ - 这是 pthread C++ 程序的不可移植错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954732/

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