的线程实现输出1 2 3
时间: 2023-11-22 11:56:00 浏览: 61
以下是使用线程实现输出1 2 3的示例代码(使用C++11标准):
```c++
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
std::mutex mtx;
std::condition_variable cv;
int count = 1;
void print_number(int id) {
std::unique_lock<std::mutex> lock(mtx);
while (count <= 3) {
while (count % 3 != id) {
cv.wait(lock);
}
std::cout << "Thread " << id << ": " << count << std::endl;
++count;
cv.notify_all();
}
}
int main() {
std::thread t1(print_number, 1);
std::thread t2(print_number, 2);
std::thread t3(print_number, 0);
t1.join();
t2.join();
t3.join();
return 0;
}
```
这个程序创建了三个线程,每个线程打印一个数字。使用互斥锁和条件变量来保证线程按顺序执行。三个线程分别被分配一个id(0、1、2),每个线程只会打印3的倍数加上其对应的id。例如,线程0只会打印3, 6, 9等等,线程1只会打印4, 7, 10等等,线程2只会打印5, 8, 11等等。这样就保证了线程之间的输出顺序。
阅读全文