【发布时间】:2012-09-12 05:29:20
【问题描述】:
我要问的平台是linux。我说的线程本地存储是gcc中的pthread_xxx或__thread。
我想在我的程序中使用 ucontext 的东西,即 makecontext、swapcontext 等。所以我的问题是,它如何与线程本地存储一起工作?更具体地说,如果我使用 swapcontext 或 setcontext 切换到另一个纤程,线程本地存储是否也会发生变化,或者线程本地存储不是上下文的一部分?
另一个问题:如果 TLS 将被setcontext/swapcontext 更改,那么无论我如何更改上下文,是否有任何东西会粘在线程上?另一方面,如果 TLS 会坚持上下文,那么有什么东西会坚持线程并且不会被 setcontext/swapcontext 改变吗?
根据http://en.wikipedia.org/wiki/Fiber_(computer_science),Windows 平台确实有线程本地存储和光纤本地存储。
【问题讨论】:
标签: c++ linux gcc pthreads thread-local-storage