建立一个控制台程序,建立四个线程,每个线程的功能为:输出0-9 共计10个数字,要求线程的输出为连续输出,借助信号量或者互斥锁进行实现。
时间: 2024-02-17 16:03:20 浏览: 20
好的,我来回答你的问题。
以下是一个简单的 C++ 控制台程序,它创建了四个线程并使用互斥锁控制它们的输出。每个线程输出数字0到9,共计10个数字。
```c++
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
int count = 0;
void printNumber(int id) {
for (int i = 0; i < 10; ++i) {
mtx.lock();
std::cout << "Thread " << id << " Output: " << count << std::endl;
++count;
mtx.unlock();
}
}
int main() {
std::thread t1(printNumber, 1);
std::thread t2(printNumber, 2);
std::thread t3(printNumber, 3);
std::thread t4(printNumber, 4);
t1.join();
t2.join();
t3.join();
t4.join();
return 0;
}
```
在这个程序中,我们使用了一个互斥锁(`std::mutex`)来确保每个线程的输出是连续的。每个线程输出前会先锁住互斥锁,输出后再释放锁。
注意到在这个程序中,我们使用了一个全局变量 `count` 来记录当前输出的数字。由于多个线程会同时访问这个变量,我们需要使用互斥锁来防止竞争条件的发生。
最后,我们创建了四个线程并启动它们,等待它们全部结束后程序才会退出。
希望这个程序能够帮助你理解如何使用互斥锁来控制多个线程的输出。