C++ 实现进程消费 - 代码示例与解析
以下是一个用 C++ 编写的进程消费的示例代码:\n\ncpp\n#include <iostream>\n#include <queue>\n#include <thread>\n#include <mutex>\n#include <condition_variable>\n\nstd::queue<int> dataQueue;\nstd::mutex mtx;\nstd::condition_variable cv;\n\nvoid producer() {\n for (int i = 0; i < 10; ++i) {\n std::this_thread::sleep_for(std::chrono::milliseconds(500));\n std::unique_lock<std::mutex> lock(mtx);\n dataQueue.push(i);\n std::cout << "Produced: " << i << std::endl;\n cv.notify_all();\n }\n}\n\nvoid consumer() {\n while (true) {\n std::unique_lock<std::mutex> lock(mtx);\n cv.wait(lock, []{ return !dataQueue.empty(); });\n int data = dataQueue.front();\n dataQueue.pop();\n std::cout << "Consumed: " << data << std::endl;\n lock.unlock();\n }\n}\n\nint main() {\n std::thread producerThread(producer);\n std::thread consumerThread(consumer);\n \n producerThread.join();\n consumerThread.join();\n \n return 0;\n}\n\n\n在这个示例中,dataQueue是一个存储整数的队列,producer函数向队列中生产数据,consumer函数从队列中消费数据。生产者每隔500毫秒生产一个整数,消费者通过等待条件变量cv来判断是否有数据可消费。当队列中有数据时,消费者从队列中取出数据并打印。
原文地址: https://www.cveoy.top/t/topic/pD8y 著作权归作者所有。请勿转载和采集!