如何枚举thread_local变量的实例

时间:2018-08-02 10:21:04

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

我正在使用线程局部变量,如:

static thread_local     int m_counter;

用于随机数序列计数器。 使用thread_local效果很好,我有一个实例 每个线程。

我的问题是我需要重置这些以进行新的仿真。我没有线程列表,所以我无权访问每个实例。我想系统地将所有计数器重置为0。

(在C ++ 11中)有推荐的方法吗?

到目前为止,我唯一的想法是使用2套计数器,例如:

static thread_local     int m_counter_a;   // counter "a"
static thread_local     int m_counter_b;   // counter "b"

我将a,b值传递给多线程代码,而不是集中重置。然后,重置“其他”组的计数器。这行得通,但我确实重复进行了约50000次重设

if (a) {
   m_counter_b = 0;
   m_counter_a++;
} else {
   m_counter_a = 0;
   m_counter_b++;
}

有办法避免重复重置吗?

0 个答案:

没有答案