操作系统线程的同步实验代码c++语言
时间: 2024-10-11 20:05:13 浏览: 25
在C++中,操作系统线程同步通常是通过互斥锁(mutex)、条件变量(condition_variable)、信号量(semaphore)等同步工具来实现的。这里提供一个简单的例子,展示如何使用互斥锁来防止多个线程同时访问共享资源:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 创建一个互斥锁
void thread_function(int id) {
for (int i = 0; i < 5; ++i) {
std::lock_guard<std::mutex> lock(mtx); // 获取锁
std::cout << "Thread " << id << ": Accessing shared resource - iteration " << i << std::endl;
// 这里模拟需要保护的操作
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main() {
std::thread t1(thread_function, 1);
std::thread t2(thread_function, 2);
t1.join();
t2.join();
return 0;
}
```
在这个例子中:
1. `std::mutex mtx` 定义了一个全局互斥锁。
2. `thread_function` 中,我们使用了`std::lock_guard`自动管理互斥锁的生命周期,当函数结束时会释放锁。
3. 主线程启动两个工作线程`t1`和`t2`,它们尝试获取相同的互斥锁,在这个过程中只有一个线程能够成功获取并访问共享资源。
阅读全文