临界区(critical section 每个线程中访问 临界资源 的那段代码)和互斥锁(mutex)的区别(进程间互斥量、共享内存、虚拟地址)

470 篇文章 38 订阅
本文探讨了临界区和互斥锁在多线程编程中的作用,两者都用于确保线程安全。临界区适用于同一进程内的线程互斥,操作速度快,但不适用于进程间同步。互斥锁则支持进程间和线程间的互斥访问,但速度相对较慢。在Linux系统中,临界区不被直接支持,而互斥体成为主要的同步机制,通过共享内存和锁机制实现。了解这些差异对于优化多线程程序至关重要。
摘要由CSDN通过智能技术生成

今天看这篇文章,感觉临界区和互斥锁效果差不多,都是锁住一段代码,只让一个线程访问,不知道有什么区别。。。
C语言多线程基础-02-临界区,互斥量

区别:

1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。
2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。
3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用(Linux下只能用锁)
参考文章:临界区和互斥锁的区别

关于进程间的互斥体(互斥锁),我不太明白,可以参考这篇文章:

Linux进程间互斥锁 (共享内存实现)

它是用共享内存的方式实现的,在调用pthread_mutex_init()函数时,第二个参数需要传入一个属性对象(状态对象)的地址

而锁需要定义在共享内存上,关于共享内存的创建,可以参考这篇文章:
Linux共享内存 封装

另外,可见补充知识:
LINUX进程变量隔离 虚拟地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值