Dee*_*ner 3 c++ multithreading mutex locking c++11
如果我有一个多个线程正在读写的全局数组,并且我想确保该数组在线程之间保持同步,那么为此使用std :: mutex是否足够,如下面的伪代码所示?我遇到了这个资源,这使我认为答案是肯定的:
互斥锁(例如std :: mutex或原子自旋锁)是释放获取同步的一个示例:当锁由线程A释放并由线程B获取时,在临界区中发生的所有事情(释放之前)在执行相同关键部分的线程B(在获取之后)必须对线程A上下文可见。
我仍然对其他人的观点感兴趣。
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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |