C++多线程交替打印ABC
时间: 2024-10-08 10:26:57 浏览: 2
在C++中,我们可以利用多线程来实现两个或更多的线程交替打印"ABC"。这里我们通常会创建两个线程,每个线程负责打印一个字母序列,然后通过互斥锁(mutex)来同步他们的输出,防止数据竞争。以下是简单的示例代码:
```cpp
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 互斥锁
void print_sequence(const std::string& sequence) {
for (char c : sequence) {
std::lock_guard<std::mutex> lock(mtx); // 获取锁
std::cout << c;
// 确保其他线程看到已打印的内容再继续
std::this_thread::yield(); // 暂停当前线程,让另一个线程运行
}
}
int main() {
std::thread t1(print_sequence, "ABC"); // 创建打印"A"的线程
std::thread t2(print_sequence, "XYZ"); // 创建打印"B"和"C"的线程
t1.join(); // 等待t1完成
t2.join(); // 等待t2完成
return 0;
}
```
在这个例子中,`print_sequence`函数会交替打印出给定的字符序列。`std::this_thread::yield()`用于让当前线程暂停,直到其他线程有机会运行,这样就实现了交替打印的效果。