🌷🌷🌷🌷🌷🌷🌷🌷① 生产者-消费者模型
🌷🌷🌷🌷🌷🌷🌷🌷② 多线程排序
🌷🌷🌷🌷🌷🌷🌷🌷③ 多线程计算Pi
① 生产者-消费者模型
生产者-消费者模型是一种常用的多线程模型,它用于解决多线程数据共享和同步的问题。生产者-消费者模型包含两个角色:生产者和消费者。生产者负责生产数据,消费者负责消费数据。生产者和消费者之间通过共享队列来进行数据交换,生产者将数据放入队列,消费者从队列中取出数据并进行消费。下面是一个使用C++线程实现生产者-消费者模型的例子:
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <queue>
std::mutex mtx;
std::condition_variable cv;
std::queue<int> q;
void producer()
{
for (int i = 0; i < 10; ++i)
{
{
std::unique_lock<std::mutex> lck(mtx);
q.push(i);
}
cv.notify_one();
}
}
void consumer()
{
while (true)
{
std::unique_lock<std::mutex> lck(mtx);
cv.wait(lck, []() { return !q.empty(); });
int val = q.front();
q.pop();
std::cout << "Consumed: " << val << std::endl;
}
}
int main()
{
std::thread t1(producer);
std::thread t2(consumer);
t1.join();
t2.join();
return 0;
}
上面的代码使用了std::mutex、std::condition_variable和std::queue等类来实现生产者-消费者模型。生产者线程生产数据并放入队列中,消费者线程从队列中取出数据并进行消费。通过std::mutex和std::condition_variable来实现线程的同步和互斥,保证生产者和消费者的数据交换的正确性。