有没有办法在使用ACE时使用线程局部变量?

时间:2010-03-10 21:31:41

标签: c++ multithreading thread-local ace

我正在使用ACE线程,并且需要每个线程都有自己的int成员。 这可能吗?

5 个答案:

答案 0 :(得分:2)

ACE称之为“特定于线程的存储”。看看这个:ACE_TSS。这就是我所知道的全部内容,抱歉无法提供更多帮助。

thread-local storage的维基百科页面说有一种pthreads方法可以做到这一点。

答案 1 :(得分:0)

其特定平台。例如,您应该使用__declspec( thread )。编译器将利用TLS API(TlsAlloc,TlsFree和朋友),在Win32上你不应该总是使用FLS(光纤本地存储)而不是TLS,但是TLS API无论如何都会在任何现代Win32上静默地重定向到FLS版本

答案 2 :(得分:0)

是。您可以使用专为“线程特定存储”设计的ACS_TSS<type>模板(即:线程局部变量)。

有关详细信息,请参阅docs on ACE_TSS

答案 3 :(得分:0)

GCC直接支持TLS for some targets。您可以使用特定于GCC的__thread关键字来定义线程局部变量(必须是静态或全局变量)。

libACE本身内置了线程本地内容,您可以查看documentation并查看example code

答案 4 :(得分:0)

没有办法让ACE_TSS为所有线程设置初始值;您可以在线程函数中输入后轻松设置初始值。