sly*_*lin 5 c++ multithreading boost boost-thread thread-local-storage
我正在阅读文档部分boost::thread_specific_ptr,并尝试解析此段落:
注意:在某些平台上,不会对使用平台的本机API创建的线程执行特定于线程的数据的清理.在这些平台上,只有使用boost :: thread启动的线程才会进行此类清理,除非从该线程手动调用boost :: on_thread_exit().
首先,这可能是一个迂腐的观点:我认为他们的意思是说boost::this_thread::at_thread_exit()而不是boost::on_thread_exit().否则我真的迷路了.
更重要的是,线程究竟需要做什么?它是否足以将一些无操作函数传递给at_thread_exit(),还是需要传递其他东西?
(这个主题在这里的评论中讨论过,但我仍然不确定我需要做什么.)
(背景故事:我正在寻找解决我今天早些时候提出的问题的方法).
经过进一步挖掘,看来这段神秘的段落确实是在说on_thread_exit()。它指的是一个未记录的函数,它不带任何参数。
以下是该函数的声明和随附的注释,来自 boost_1_55_0/boost/thread/detail/tss_hooks.hpp:
BOOST_THREAD_DECL void __cdecl on_thread_exit(void);
//Function to be called just be fore a thread ends
//in an exe or dll that uses Boost.Threads.
//Must be called in the context of the thread
//that is ending.
//Called automatically by Boost.Threads when
//a method for doing so has been discovered.
//Must not be omitted; may be called multiple times.
Run Code Online (Sandbox Code Playgroud)
因此,iiuc,我需要做的是编写特定于平台的代码,只要任何类型的线程终止(如果该线程一直在使用boost::thread_specific_ptr.