news 2026/11/4 2:38:26

线程互斥线程安全死锁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线程互斥线程安全死锁

一、线程互斥

1、什么是线程互斥

保证只有一个执行流进入临界区

2、如何实现线程互斥——互斥量(互斥锁)-悲观锁

(1)pthread_mutex_init——动态初始化互斥量

PTHREAD_MUTEX_INITIALIZER静态初始化,不需要销毁

(2)pthread_mutex_destroy——销毁互斥量,回收资源

(3)pthread_mutex_lock——对互斥量加锁

(4)pthread_mutex_unlock——释放互斥锁

(5)pthread_mutex_trylock——非阻塞尝试加锁

(6)pthread_mutex_timedlock——限时加锁

(7)pthread_mutexattr_settype——设置锁类型

(8)pthread_mutexattr_gettype——读取已经配置的锁

3、如何实现互斥锁有效——即抢锁有效

硬件xchg将查看锁以及拿到锁以及换锁封装成原子操作,保证只有一个线程可以成功的拿到锁

4、CAS锁-乐观锁

依托cmpxchg将比较判断写入封装为原子操作的前提,通过先计算再原值是否改变,改变了则再试一次,没改变则写入数据,不加锁

补充:

(1)竟态条件:多个线程争抢同一共享资源时的场景并可能产生错误的危险

(2)抢占式:即内核可以随时将CPU切换给其他线程,而不等线程使用完

(3)同步:协调进程/线程,使其执行预期行为

(4)同步机制:一套规则或工具,用来实现线程顺序执行

实现工具有:互斥锁、信号量、条件变量、原子操作、读写锁

二、可重入vs线程安全

1、线程安全:多个线程对同一变量进行操作时不会出现结果不同

可重入:同一函数被不同执行流调用,当前执行流还没有结束另一执行流开始进行该函数称为重入,结果无误则为可重入,结果有误则为不可重入

三、死锁

1、什么是死锁:

一组进程或线程占有一定的资源同时又在等待别的线程已占用的资源的现象

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:35:43

2026保定消费品检测第三方公司排行榜TOP5:日用品质检+材质安全检测+电商入驻检测+产品质检报告 机构地址及联系方式推荐

保定街头巷尾,检测招牌林立如云,各类标榜“权威”“加急”“包过”的小店星罗棋布。真伪难辨、资质参差、报告含糊者不在少数。为助市民拨云见日,小编历时三周实地踏访,穿梭于竞秀、莲池、高新区核心商圈,比对资质备案…

作者头像 李华
网站建设 2026/11/4 2:35:30

40岁中年男人失业,送外卖,一天收入不足30元

2026年某月某日注册了“X东秒送骑士”,以下说说整个过程。注册很简单,就是手机号、身份证正反面等常规操作。 注册完后要在APP里学习一些基本的交通知识和在线考试(考试也很简单,就是单选和多选题)然后要交100元押金&a…

作者头像 李华
网站建设 2026/11/4 2:35:23

Git 2.56 安装后怎么配:SSH Key、首次 push、换行符设置

Git 装完只是能敲命令,真正连上 GitHub/Gitee 还要配 SSH Key,第一次 push 也有固定顺序。这篇接着安装之后讲:安装向导里三处怎么选、SSH Key 怎么生成、第一次把本地仓库推上去。 一、安装:三处别选错 图1:安装向导…

作者头像 李华
网站建设 2026/11/4 2:35:19

市场的含义类型、概念

市场营销笔记整理版(结构清晰,适合背诵) 一、市场的含义和类型 (一)市场的概念 通俗理解:买卖东西的场所狭义市场:买卖双方交易商品的场所广义市场:一定时空条件下,商品交…

作者头像 李华
网站建设 2026/11/4 2:33:52

一个售后系统项目上线验收时,哪些结果能证明这套系统真的可用?

一个售后系统项目上线验收时,哪些结果能证明这套系统真的可用? 太长不看版 售后系统验收不能只看页面能否打开或供应商能否演示,还要验证合同和需求中约定的业务流程,能否由实际使用角色按测试用例跑通;相关数据能否查…

作者头像 李华