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

【Linux】深入理解线程同步与互斥

深入理解线程同步与互斥


文章目录

  • 深入理解线程同步与互斥
  • 一、线程互斥
    • 1.1 进程线程间的互斥相关背景概念
    • 1.2 互斥量mutex
    • 1.3 互斥量实现原理探究
  • 二、线程同步
    • 2.1 条件变量
    • 2.2 同步概念与竞态条件
    • 2.3 条件变量函数
    • 2.4 生产者消费者模型(321模型)
      • 2.4.1 为何要使用生产者消费者模型
      • 2.4.2 生产者消费者模型优点
    • 2.5 基于BlockingQueue的生产者消费者模型
      • 2.5.1 BlockingQueue
    • 2.6 为什么pthread_cond_wait需要互斥量?
    • 2.7 条件变量使用规范
    • 2.8 POSIX信号量
      • 2.8.1 基于环形队列的生产消费模型
  • 三、线程池
    • 3.1 日志与策略模式
    • 3.2 线程池设计
    • 3.3 线程安全的单例模式
      • 3.3.1 单例模式的特点
      • 3.3.2 饿汉实现方式和懒汉实现方式
      • 3.3.3 饿汉方式实现单例模式
      • 3.3.4 懒汉模式实现单例模式
      • 3.3.5 懒汉方式实现单例模式(线程安全版本)
  • 四、线程安全和重入问题
  • 五、常见锁概念
    • 5.1 死锁
    • 5.2 死锁四个必要条件
    • 5.3 避免死锁
  • 六、STL,智能指针和线程安全
    • 6.1 STL中得容器是否是线程安全的
    • 6.2 智能指针是否是线程安全的?
  • 七、其他常见的各种锁


一、线程互斥

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


1.1 进程线程间的互斥相关背景概念

在这里插入图片描述


1.2 互斥量mutex

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


1.3 互斥量实现原理探究

在这里插入图片描述
在这里插入图片描述


二、线程同步

引入新的奇数,必定引入新的问题,
为了进一步解决问题,就必须有新的技术被引入
在保证安全的前提下,让所有的执行流访问临界资源,
按照一定的顺序进行访问资源 – 》叫做线程同步


2.1 条件变量

在这里插入图片描述


2.2 同步概念与竞态条件

在这里插入图片描述


2.3 条件变量函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.4 生产者消费者模型(321模型)

在这里插入图片描述


2.4.1 为何要使用生产者消费者模型

在这里插入图片描述


2.4.2 生产者消费者模型优点

在这里插入图片描述


2.5 基于BlockingQueue的生产者消费者模型

在这里插入图片描述

2.5.1 BlockingQueue

在这里插入图片描述


2.6 为什么pthread_cond_wait需要互斥量?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.7 条件变量使用规范

在这里插入图片描述


2.8 POSIX信号量

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.8.1 基于环形队列的生产消费模型

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、线程池

在这里插入图片描述


在这里插入图片描述


3.1 日志与策略模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.2 线程池设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.3 线程安全的单例模式

3.3.1 单例模式的特点

在这里插入图片描述


3.3.2 饿汉实现方式和懒汉实现方式

在这里插入图片描述


3.3.3 饿汉方式实现单例模式

在这里插入图片描述
在这里插入图片描述


3.3.4 懒汉模式实现单例模式

在这里插入图片描述
在这里插入图片描述


3.3.5 懒汉方式实现单例模式(线程安全版本)

在这里插入图片描述
在这里插入图片描述


四、线程安全和重入问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、常见锁概念

5.1 死锁

在这里插入图片描述
在这里插入图片描述
申请⼀把锁是原⼦的,但是申请两把锁就不⼀定了


在这里插入图片描述
在这里插入图片描述


5.2 死锁四个必要条件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


5.3 避免死锁

在这里插入图片描述
在这里插入图片描述


六、STL,智能指针和线程安全

6.1 STL中得容器是否是线程安全的

在这里插入图片描述


6.2 智能指针是否是线程安全的?

在这里插入图片描述


七、其他常见的各种锁

在这里插入图片描述


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

相关文章:

  • 山东青岛网站建设公司排名网站空白页黑链
  • C++学习之变量、常量、关键字、标识符命名规则、数据类型
  • BMS电池管理系统学习笔记_SOC算法
  • 浅谈信创数据库改造重难点
  • 建设银行唐山分行网站上海专业网站建设服务
  • 算法沉淀第七天(AtCoder Beginner Contest 428 和 小训练赛)
  • 温州做网站定制车载互联系统网站建设
  • 迅当网络深圳外贸网站建设竞价网络推广
  • 【GESP】C++四级真题 luogu-B4006 [GESP202406 四级] 宝箱
  • 公司做网站找谁公司做网站找谁网站信息评估抽查
  • wordpress网站添加密码访问营销微网站建设公司
  • 吴恩达新课程:Agentic AI(笔记2)
  • 用dw怎么做网站留言板重庆重庆网站建设
  • 家具网站开发目的wordpress页脚太高
  • 西南交通建设集团股份有限公司网站带分期功能的网站建设
  • 姚期智京都奖( 2021)演讲:做研究最好的方法是提出深刻、大胆和关键性的问题
  • 商务网站创建经费预算wordpress打开文章响应慢
  • arthas简介
  • 企业网站源码交易国产wordpress主题
  • 做网站要学什么c语言西安网站建设求职简历
  • 用阿里云服务器做自己购物网站wordpress多人聊天室
  • sm2025 模拟赛16 (2025.10.11)
  • 国内网站建设流程淘宝店标logo在线制作免费
  • 长沙市做网站公司排名广州做网站好的公司
  • SQL Server数据查询语句
  • 给领导发网站建设可行性方案邮件怎么写wordpress 获取用户邮箱
  • SQL NULL 函数详解
  • Linux进程信号(壹)_产生信号
  • 关于茶文化网站建设的背景做全屏的网站 一屛多高
  • GIS与农业 考公考编面试 几个参考题