当前位置: 首页 > news >正文

Linux线程同步与互斥应用/生产者消费者模型

一,理论讲解

我们拿工厂,超市和消费者直接的关系来做讲解,首先人去超市买东西的过程就不用多说,但是超市本身是不能生产商品的,他们需要从各个不同的工厂进货商品,然后再给消费者买,以计算机的角度来看的话超市就是一个具有缓存的数据结构,工厂和消费者就是线程:(工厂等于生产者)

当一个生产者往缓冲区写入数据的时候,其他生产者得等他放完数据之后才能再往里面写数据,消费者也一样,当消费者去超市买东西的时候,其他消费者也不能进去买东西,除此之外还有一个问题,当工厂怎么知道缓冲区的容量是否已经满了?消费者怎么知道超市里有没有东西买?其实可以利用同步的特性去解决,当工厂进货时可以提醒消费者消费了j,消费者在买东西的时候如果看到货架空了,可以提醒工厂该进货了

提炼:

1,共享或者临界资源

2,我们要研究生产消费者模型,就得研究多个生产,多个消费的同步互斥关系

3,生产者和生产者:互斥关系

      消费者和消费者:互斥关系

      生产者和消费者:互斥&&同步关系

总结:三种关系,两种角色,一个交易所

二,代码实现

http://www.dtcms.com/a/46685.html

相关文章:

  • Leetcode-1776. Car Fleet II [C++][Java]
  • 第50天:Web开发-JavaEE应用SpringBoot栈ActuatorSwaggerHeapDump提取自动化
  • 翻转--蓝桥
  • 【深入剖析:机器学习、深度学习与人工智能的关系】
  • 【漫话机器学习系列】114.逻辑 Sigmoid 函数
  • 【Kubernets】K8S内部nginx访问Service资源原理说明
  • python爬虫Scapy框架(1)
  • 精灵图又名雪碧图的使用方法
  • idea生成自定义Maven原型(archetype)项目工程模板
  • windows系统本地部署DeepSeek模型
  • 大模型 参数 use_cache 怎么用? 与 KV Cache 是什么关系?
  • Qt 的 Lambda 捕获局部变量导致 UI 更新异常的分析与解决
  • netty18罗汉——布袋罗汉(encoder)
  • 如何在Python用Plot画出一个简单的机器人模型
  • llama-factory || AutoDL平台
  • ASP.NET Core 3.1 修改个别API返回JSON序列化格式
  • MySQL整体架构
  • Docker - 网络
  • 用冒泡排序法模拟qsort函数
  • LabVIEW中三种PSD分析VI的区别与应用
  • 微调训练方法概述:Fine-tuning、Prompt-tuning、P-tuning 及其他高效技术
  • pwa的基本使用
  • 2W8000字 LLM架构文章阅读指北
  • pytorch2.6.0版本测试YOLOv5中detect.py错误解决办法
  • http报文的content-type参数和spring mvc传参问题
  • 高频 SQL 50 题(基础版)_550. 游戏玩法分析 IV
  • 系统架构设计师—计算机基础篇—系统性能评价
  • 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用
  • 小结:BGP协议
  • AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题目翻译