本文主要是介绍C++的并发世界(六)——互斥解决数据共享冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0.数据共享的问题
在多个线程中共享数据时。需要注意线程安全问题。如果多个线程同时访问同一个变量。并且其中至少有一个线程对该变量进行了写操作。那么就会出现数据竞争问题。数据竞争可能会导致程序崩溃,产生来定义的结果,或者得到错误的热果。为了避免数据竞争问题。需要使用同步机制来确保多个线程之间对共享数据的访同是安全的。常见的同步机制包括互厍量。条件变量,原子授作等。
1. 预期示例
#include <iostream>
#include <thread>int a = 3;
void func()
{std::cout << "begin:" << a << std::endl;a++;std::cout << "end:" << a << std::endl;
}int main()
{for (int i = 0; i < 10; i++){std::thread th(func);th.join();}getchar();return 0;
}
2.目标示例
#include <iostream>
#include <thread>
#include <mutex>int a = 3;
std::mutex mutex;void func()
{mutex.lock();std::cout << "begin:" << a << std::endl;a++;std::cout << "end:" << a << std::endl;mutex.unlock();
}int main()
{for (int i = 0; i < 10; i++){std::thread th(func);th.detach();}getchar();return 0;
}
这篇关于C++的并发世界(六)——互斥解决数据共享冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!