4

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

4

5 回答 5

2

ACE 将此称为“线程特定存储”。看看这个:ACE_TSS。这就是我所知道的一切,抱歉不能提供更多帮助。

线程本地存储的维基百科页面说也有一种 pthreads 方法可以做到这一点。

于 2010-03-10T21:38:43.803 回答
0

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

于 2010-03-10T21:38:55.380 回答
0

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

有关详细信息,请参阅ACE_TSS 上的文档。

于 2010-03-10T21:41:01.757 回答
0

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

libACE 本身内置了线程本地的东西,您可以查看文档并查看示例代码

于 2010-03-10T21:41:12.067 回答
0

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

于 2010-03-11T16:06:51.140 回答