如何遍历所有thread_local变量?

时间:2015-07-03 12:31:53

标签: c++ multithreading c++11 thread-local-storage

我想更新一个由多个线程更改的变量。

我可以使用单个原子变量,并以原子方式递增它,但据称慢。

建议的解决方案是分配一个线程局部变量,然后递增它。

thread_local unsigned int _tls_size = 0U;
/* ... */
_tls_size++;
/* ... */

这一步没问题,但问题是现在计算跨线程存储的所有_tls_size的总和。

有什么想法吗?我想过std::vector<unsigned int *>存储所有地址,但是:

  • Visual Studio不喜欢它并返回错误。
  • 线程分离时会发生什么?相应的指针不会引用有效的内存!

谢谢!

0 个答案:

没有答案