#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
int flag = 0;
// 简化版线程函数,仅打印一次字符
void print_char(char c, int id) {
std::unique_lock<std::mutex> lk(mtx);
cv.wait(lk, [id, &flag] { return flag == id; }); // 等待轮到自己打印
std::cout << "Thread " << id << ": " << c << std::endl;
flag = (flag + 1) % 3; // 更新状态为下一个线程的标识
cv.notify_all(); // 唤醒所有等待的线程
}
int main() {
std::thread t1(print_char, 'A', 0);
std::thread t2(print_char, 'B', 1);
std::thread t3(print_char, 'C', 2);
t1.join();
t2.join();
t3.join();
return 0;
}