博客
关于我
【Linux】为什么会有互斥锁?
阅读量:494 次
发布时间:2019-03-07

本文共 367 字,大约阅读时间需要 1 分钟。

同步与互斥是多线程编程中的两个核心概念。很多人误以为同步就能保证互斥,但实际上这是不正确的。真正实现互斥,往往需要用到互斥锁。

在 pthread_cond_wait 这个函数中,有一个关键点是它内部会自动释放互斥锁。具体来说,当我们调用 pthread_cond_wait 时,会将当前 PCB 推入等待队列,并释放所持有的互斥锁。这种设计使得等待过程不会阻塞互斥锁的使用。

另外,需要注意的是,互斥锁的使用是在小节内进行的。也就是说,只有在同一个函数中才会使用互斥锁保护,这样可以确保只有一个线程能够进入该区域。这样做既保证了互斥,又避免了多线程竞用的问题。

总的来说,pthread_cond_wait 的设计非常高效。它先将 PCB 放到等待队列中,然后释放互斥锁。这种做法既保证了等待过程的合法性,又避免了互斥锁的死锁风险。

转载地址:http://rnacz.baihongyu.com/

你可能感兴趣的文章
OSPF多区域
查看>>
Docker入门之-镜像(二)
查看>>
嵌入式系统试题库(CSU)
查看>>
setup facatory9.0打包详细教程(含静默安装和卸载)
查看>>
java.security.InvalidKeyException: Illegal key size
查看>>
Linux kernel pwn --- CSAW2015 StringIPC
查看>>
IDEA 找不到 Persistence窗口解决办法
查看>>
Form窗体属性
查看>>
vue 错误收集
查看>>
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
查看>>
00013.05 字符串比较
查看>>
Effective Java 读书笔记
查看>>
访问servlet时弹出文件下载框解决方法
查看>>
IDEA-@Slf4j和log标签&@Data(Lombok)无效
查看>>
SpringCloud-Eureka报错 Error creating bean with name解决
查看>>
Thymeleaf 生成下标,索引,使用Stat变量
查看>>
初始微服务---Springcloud发展【第一期】
查看>>
RAFT 拜占庭将军 共识算法
查看>>
UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
查看>>
cmd编译.java文件 : java:720: 错误: 编码GBK的不可映射字符 Why ? ? ? ?
查看>>