在Linux系统中,如何通过C++编程创建和同步多个线程,并确保共享变量访问的安全性?请提供实现的代码示例。
时间: 2024-12-07 17:26:34 浏览: 7
为了深入理解线程的并发执行和同步机制,特别是在Linux系统中,推荐查阅《华工操作系统实验:进程与线程同步探索》。这份资料将为你提供关于进程和线程同步的实验指导和深入分析。
参考资源链接:[华工操作系统实验:进程与线程同步探索](https://wenku.csdn.net/doc/3fraxh9gc1?spm=1055.2569.3001.10343)
在Linux中使用C++创建和同步多个线程,可以通过使用C++11标准引入的<thread>库来实现。为了确保共享变量的安全性访问,我们可以使用互斥锁(<mutex>)来防止竞态条件。以下是一个简单的代码示例,展示了如何创建两个线程并使用互斥锁同步它们,以安全地访问和修改共享变量:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 创建互斥锁
void add(int increment, int &shared_var) {
for (int i = 0; i < 100000; ++i) {
mtx.lock(); // 上锁
shared_var += increment; // 修改共享变量
mtx.unlock(); // 解锁
}
}
void subtract(int decrement, int &shared_var) {
for (int i = 0; i < 100000; ++i) {
mtx.lock(); // 上锁
shared_var -= decrement; // 修改共享变量
mtx.unlock(); // 解锁
}
}
int main() {
int shared_var = 0;
// 创建线程
std::thread t1(add, 1, std::ref(shared_var));
std::thread t2(subtract, 1, std::ref(shared_var));
// 等待线程结束
t1.join();
t2.join();
// 输出最终结果
std::cout <<
参考资源链接:[华工操作系统实验:进程与线程同步探索](https://wenku.csdn.net/doc/3fraxh9gc1?spm=1055.2569.3001.10343)
阅读全文