C++多线程学习笔记004简单的Producer和Consumer模型

C++多线程学习笔记004简单的Producer和Consumer模型

引言

Producer为队列中添加“任务”,Consumer自队列中取出并完成“任务”。

实列代码

#include<iostream>
#include<thread>
#include<unistd.h>
#include<mutex>
#include<condition_variable>
#include<queue>

std::queue<int> queue1;
std::condition_variable condtval1;
std::mutex mtx;

void Producer() {
   
    for(int i = 0; i < 10; i++){
   
        {
      
            std::unique_lock<std::mutex> unlck(mtx);
            queue1.push(i);
            condtval1.notify_one();
            std::cout << "Producer : " << i << std::endl;
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(1000));
    }
}

void Consumer() {
   
    while(1){
   
        std::unique_lock<std::mutex> unlck(mtx);
        condtval1.wait(unlck, [] () {
   return !queue1.empty();});
        int val = queue1.front();
        queue1.pop();
        std::cout << "Consumer : " << val << std::endl;
    }
}

int num {
   0};



int main(){
   

    std::thread thread1(Producer);
    std::thread thread2(Consumer);
    thread1.join();
    thread2.join();
    std::cout <<"over" << std::endl;
    return 0;
}
// g++ ./XXX.cpp -o ./XXX -pthread

相关推荐

  1. C++线学习笔记004简单ProducerConsumer模型

    2023-12-25 05:54:03       55 阅读
  2. C++学习笔记线

    2023-12-25 05:54:03       31 阅读
  3. C++线学习笔记

    2023-12-25 05:54:03       27 阅读
  4. C++ 线笔记1 线创建

    2023-12-25 05:54:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-25 05:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-25 05:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-25 05:54:03       82 阅读
  4. Python语言-面向对象

    2023-12-25 05:54:03       91 阅读

热门阅读

  1. Ubuntu18.04安装GTSAM库(亲测可用)

    2023-12-25 05:54:03       60 阅读
  2. OV5640:寄存器 自用

    2023-12-25 05:54:03       54 阅读
  3. KPM算法快速检索文本

    2023-12-25 05:54:03       52 阅读
  4. LeetCode day30

    2023-12-25 05:54:03       71 阅读
  5. 常用算法-桶排序

    2023-12-25 05:54:03       52 阅读
  6. git使用

    git使用

    2023-12-25 05:54:03      61 阅读
  7. vue和react的区别是什么

    2023-12-25 05:54:03       62 阅读
  8. 给qemu虚机更换(Windows PE)光盘

    2023-12-25 05:54:03       46 阅读
  9. 建造者模式(Builder)

    2023-12-25 05:54:03       59 阅读
  10. 7-3 求完数

    2023-12-25 05:54:03       63 阅读