1
如果我有一个全局数组,多个线程正在写入和读取,并且我想确保此数组在线程之间保持同步,正在使用std :: mutex足够多为此,如下面的伪代码所示?我碰到一个this resource,这让我觉得答案是肯定的:是std :: mutex足够用于线程之间的数据同步
,互斥锁(如性病::互斥体或原子自旋锁)的释放,获取同步的例子:当锁被释放通过线程A并由线程B获取,在线程A的上下文中(在发布之前)发生的所有事情必须对正在执行相同关键部分的线程B(在获取之后)可见。
我仍然对其他人的意见感兴趣。
float * globalArray;
std::mutex globalMutex;
void method1()
{
std::lock_guard<std::mutex> lock(globalMutex);
// Perform reads/writes to globalArray
}
void method2()
{
std::lock_guard<std::mutex> lock(globalMutex);
// Perform reads/writes to globalArray
}
main()
{
std::thread t1(method1());
std::thread t2(method2());
std::thread t3(method1());
std::thread t4(method2());
...
std::thread tn(method1());
}
是的。 'std :: mutex'用于同步 – NathanOliver
那么,您是否会猜测您在cppreference上阅读的所有内容?作为一般规则(尽管有一些偏差,但你会很难找到那些),cppreference是非常可靠和可靠的证据来源。通常它是StackOverflow上的最终仲裁者,而不是其他方式;) – SergeyA