首页 > 其他分享 >多线程——生产者和消费者(等待唤醒机制)

多线程——生产者和消费者(等待唤醒机制)

时间:2023-03-27 19:57:46浏览次数:34  
标签:消费者 生产者 阻塞 多线程 唤醒 末尾

生产者和消费者(等待唤醒机制)

生产者消费者模式是一个十分经典的多线程协作的模式

举例:

 

 

 

实现方式一: 

线程的方法代码编写技巧,如run():

步骤:

(1)循环;

(2)同步代码块;

(3)判断共享数据是否到了末尾(到了末尾)

(4)判断共享数据是否到了末尾(没到末尾,执行核心逻辑)

wait(),notify(),notifyAll()都是 调用锁对象的

例如: 锁对象为lock  lock.wait(); //作用:让当前进程跟锁进行绑定

唤醒也是唤醒跟该锁对象有关(绑定)的所有进程。

 

实现方式二:

阻塞队列方式实现

put数据时:放不进去,会等着,也叫阻塞。

take数据时:取出第一个数据,取不到会等着,也叫阻塞。

 

细节:

生产者和消费者必须使用同一个阻塞队列

 

标签:消费者,生产者,阻塞,多线程,唤醒,末尾
From: https://www.cnblogs.com/qiqi-yi/p/17262625.html

相关文章

  • android实现多线程基础
    //创建线程类classMythreadextendsThread{@Overridepublicvoidrun(){//定义行为}}//实例化线程类MyThreadmt=newMyThread(“线程名称”);///......
  • 多线程中常见的成员方法
     MyThreadt=newMyThread();1、StringgetName()细节:如果没有给线程设置名字,线程也是有默认的名字的格式:Thread-X(X序号,从0开始)2、voidsetName(Stringname)细......
  • 多线程
    1、概念线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。进程:进程是程序的基本执行实体。多线程:有了多线程,就可以让程序同......
  • 多线程的同步和互斥—线程的信号量
    同步://account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>#include<semaphore.h>typedefstruct{intcode;doublebalance;......
  • Python多任务-多线程-多进程-协程-进阶学习
    --多任务-多线程-多进程-协程-进阶学习--文中所提到的案例参考:GITHUB中项目文件夹https://github.com/FangbaiZhang/Python_advanced_learning/tree/master/02_Python_ad......
  • Task 类 多线程
    Task类定义命名空间: System.Threading.Tasks程序集:System.Runtime.dll表示一个异步操作publicclassTask:IAsyncResult,IDisposable继承  Object->Task......
  • 多线程的互斥—读写锁
    //account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>typedefstruct{intcode;doublebalance;//定义一把互斥锁,用......
  • java——spring boot集成kafka——生产者端发送消息的缓冲区机制
           ......
  • 多线程的并发—互斥锁(互斥量)
    //account.h#ifndef_ACCOUNT_H#define_ACCOUNT_H#include<pthread.h>typedefstruct{intcode;doublebalance;//定义一把互斥锁,用......
  • 多线程操作共享资源(如全局变量)原理
    CPU对变量的计算分为三个步骤:1.从内存读取变量到寄存器(如add寄存器)2.将读取到的变量进行计算3.将寄存器中计算的值写入内存 如有两个线程(线程1和线程......