可以同时获取读卡器锁(SRW)的线程数量是否有限制?

时间:2017-09-28 11:30:43

标签: c++ multithreading concurrency mutex thread-synchronization

在我的应用程序中,对于并发性,我在Windows上使用Slim Reader Writer锁,在Mac / Linux上使用pthread_rwlock_t。

我看到一个奇怪的测试失败让我想知道在给定时间内能够拥有读者的线程数量是否有限制?

请为SRW锁和pthread_rwlock_t回答这个问题。谢谢!

更新

测试创建了16个初始化的线程来调用相同的proc,比如说foo()。这间歇性地挂了。

function numbersOutput(numbers) {

  var num = numbers.split(' ');
  var max = Math.max.apply(null, num);
  console.log(max);

}
numbersOutput("1 2 3 4 5");

1 个答案:

答案 0 :(得分:0)

问题结果是编译器正在优化变量g_TotalNumberOfThreads(在问题中的上述代码中),因为它没有被一直读取。

将变量g_TotalNumberOfThreads标记为volatile修复了问题。谢谢 !