我正在使用线程局部变量,如:
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++;
}
有办法避免重复重置吗?