酷代码 AI
菜单
服务商

写一个抢座位的程序

以下是一个简单的抢座位的程序示例: ``` #include <iostream> #include <mutex> #include <thread> #include <vector> std::mutex seatMutex; // 互斥锁用于保护座位 std::vector<bool> seats(10, true); // 座位状态,true代表空座位,false代表已被占用座位 void reserveSeat(int seat) { std::lock_guard<std::mutex> lock(seatMutex); // 申请互斥锁 if (seat >= 0 && seat < seats.size() && seats[seat]) { // 检查座位是否合法且是否空闲 seats[seat] = false; // 占用座位 std::cout << "成功预订座位:" << seat << std::endl; } else { std::cout << "座位已被占用或输入的座位号无效:" << seat << std::endl; } } int main() { std::vector<std::thread> threads; // 存储抢座位的线程 for (int i = 0; i < 20; i++) { // 创建20个抢座位的线程 threads.emplace_back(reserveSeat, i % 10); } for (auto& thread : threads) { // 等待所有线程执行完毕 thread.join(); } return 0; } ``` 上述程序使用了互斥锁(`std::mutex`)来保护座位的访问,每个线程要预订座位时必须先申请互斥锁,如果座位空闲,则将其标记为占用;如果座位已被占用或输入的座位号无效,则不进行任何操作。在主函数中创建了20个抢座位的线程,并等待它们执行完毕。 这只是一个简单的示例,实际应用中可能需要更复杂的逻辑和错误处理机制。座位状态的数据结构和访问方式也可能根据具体需求不同而有所变化。 [2024-10-22 09:57:36 | AI写代码神器 | 886点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]