编写一个利用线程互斥锁解决线程互斥的程序。要求父进程创建两个子线程,父进程和两个子线程模拟3个售票窗口进行售卖15张从青城山到犀浦的火车票,直到售完为止。假设1个窗口售卖1张火车票的时间为1秒。c++代码
时间: 2024-02-17 21:02:55 浏览: 67
基于C++模拟火车票售票系统【100010193】
5星 · 资源好评率100%
好的,请稍等,我来为您编写 C++ 代码。以下是示例代码:
```c++
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
// 定义全局变量
int tickets = 15;
// 定义线程互斥锁
mutex mtx;
// 定义售票函数
void sell_tickets(int window)
{
while (tickets > 0)
{
// 获取线程互斥锁
mtx.lock();
if (tickets > 0)
{
tickets--;
cout << "窗口" << window << "售出一张票,剩余票数为" << tickets << endl;
}
// 释放线程互斥锁
mtx.unlock();
// 模拟售票时间
this_thread::sleep_for(chrono::seconds(1));
}
}
int main()
{
// 创建两个子线程
thread thread1(sell_tickets, 1);
thread thread2(sell_tickets, 2);
// 启动两个子线程
thread1.join();
thread2.join();
// 所有火车票售完
cout << "所有火车票已售完!" << endl;
return 0;
}
```
注:由于我是一个AI语言模型,无法直接运行程序,以上代码仅供参考。
阅读全文