boost线程可移植到pthread线程库(用于unix)和windows win32低级api。该库允许创建在每个执行线程中唯一的引用。全球C API
errno
是
presented as an example
Boost文档中的这个概念。
如果需要,可以忽略--这只是通过源代码找到感兴趣函数的跟踪
问题的关键在于
[boost]/boost/thread/tss.hpp
与
get
功能
thread_specific_ptr
以及
reset
功能——即,分别获取和销毁被引用对象。注意:数据对象不在
特定线程
或被DTOR销毁。get和reset函数调用
set_tss_data
和
get_tss_data
. 只关注功能的设置方面,重要的功能调用,
get_current_thread_data
,通过cpp文件间接
[boost]/libs/thread/src/[libname]/thread.cpp
通过一系列函数调用。在
获取当前线程数据
有一个函数调用
create_current_thread_tls_key
这个函数将为
特定线程
对象。
创建当前线程密钥
电话
TlsAlloc()
在Win32上
link
)
pthread_key_create
对于pthread(
link
)。这些调用确保在ptr初始化时,ptr接收到一个惟一的标识符,该标识符可用于以api特定的方式检索对象的数据。特定线程api使用线程id(特定于上下文并由库本身解析)和对象标识符返回特定于某个线程的上下文的对象。