gpt4 book ai didi

boost - 为什么我们需要 boost::thread_specific_ptr?

转载 作者:行者123 更新时间:2023-12-02 19:40:02 29 4
gpt4 key购买 nike

为什么我们需要 boost::thread_specific_ptr,或者换句话说,没有它我们不能轻易做什么?

我可以明白为什么 pthread 提供 pthread_getspecic() 等。这些函数对于死线程后的清理很有用,并且可以方便地从 C 风格函数调用(明显的替代方法是在任何地方传递一个指向分配的某些内存的指针)在创建线程之前)。

相比之下,boost:thread 的构造函数通过值获取一个可调用类,并且该类中的所有非静态内容一旦被复制,就会成为线程本地的。我不明白为什么我想要使用 boost::thread_specific_ptr 而不是类成员,就像我想要在 OOP 代码中使用全局变量一样。

我是不是误解了什么?一个非常简短的例子会有所帮助。非常感谢。

最佳答案

thread_specific_ptr 只是提供可移植线程本地数据访问。您不必使用 Boost.Thread 管理线程即可从中获取值(value)。典型示例是此类的 Boost 文档中引用的示例:

One example is the C errno variable, used for storing the error code related to functions from the Standard C library. It is common practice (and required by POSIX) for compilers that support multi-threaded applications to provide a separate instance of errno for each thread, in order to avoid different threads competing to read or update the value.

关于boost - 为什么我们需要 boost::thread_specific_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629526/

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