C++ 进程同步demo
时间: 2024-09-06 21:04:22 浏览: 64
C++共享内存进程间通信 demo
3星 · 编辑精心推荐
在C++中,进程同步通常通过互斥锁(mutex)、条件变量(condition_variable)或者信号量(semaphore)等工具来实现。这里提供一个简单的基于互斥锁的线程同步示例:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 创建一个互斥锁
void printNumber(int number, bool isSecondThread) {
std::lock_guard<std::mutex> lock(mtx); // 获取锁,防止并发修改共享资源
if (isSecondThread) {
std::cout << "Second thread: Waiting for first thread to finish..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟任务延迟
}
std::cout << "Thread " << (isSecondThread ? "2" : "1") << ": Printing number " << number << std::endl;
}
int main() {
std::thread t1(printNumber, 10, false); // 第一号线程
std::thread t2(printNumber, 20, true); // 第二线程,等待第一线程完成后打印
t1.join(); // 等待主线程结束
t2.join(); // 等待所有线程结束
return 0;
}
```
在这个例子中,两个线程分别打印数字。`printNumber`函数会获取互斥锁,确保同一时间只有一个线程可以进入临界区。如果第二个线程启动时第一个线程还在运行,它会选择等待。
阅读全文