我们为什么需要boost :: thread_specific_ptr,或者换句话说,没有它我们很难做到什么?
我可以看出pthread为什么提供pthread_getspecific()等函数。这些函数对于清理死亡线程非常有用,并且方便从C风格的函数调用(明显的替代方案是在创建线程之前传递指向某些内存的指针)。
相比之下,boost:thread的构造函数通过值获取可调用类,并且一旦复制,该类中的所有非静态内容都会变为线程本地。我看不出为什么我想要使用boost :: thread_specific_ptr而不是类成员,就像我不想在OOP代码中使用全局变量一样。
我是否完全误解了任何东西?请给一个非常简短的示例。非常感谢。
我可以看出pthread为什么提供pthread_getspecific()等函数。这些函数对于清理死亡线程非常有用,并且方便从C风格的函数调用(明显的替代方案是在创建线程之前传递指向某些内存的指针)。
相比之下,boost:thread的构造函数通过值获取可调用类,并且一旦复制,该类中的所有非静态内容都会变为线程本地。我看不出为什么我想要使用boost :: thread_specific_ptr而不是类成员,就像我不想在OOP代码中使用全局变量一样。
我是否完全误解了任何东西?请给一个非常简短的示例。非常感谢。
thread_specific_ptr
的变量来处理其上下文,而无需使用boost::thread进行线程管理的开销。 - Steve Townsend