原子操作,pv操作---记录

本文探讨了原子操作的重要性,如sig_suspend的信号屏蔽与进程挂起的组合,以及线程同步的机制。详细讲解了i++这种非原子操作的原理,并介绍了互斥锁(thread_mutex)如何确保读-改-写的原子性,防止多线程内存冲突。同时,阐述了信号量(sem)在进程和线程调度中的作用,以及pthread_mutex_lock/unlock在资源管理中的应用。最后,讨论了阻塞队列中阻塞的两种情况和PV操作在资源分配中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sig_suspend(传入临时信号屏蔽字用于解除屏蔽);//将解除屏蔽和挂起进程合成为一个原子操作,具体看系统编程信号笔记

++i;i++不是原子操作,因为它还临时存储了一个右值;

thread_mutex;互斥锁,有线程锁时,读-改-写 会合成为一个原子操作,借此避免多线程访问内存冲突的情况,具体看系统编程线程笔记

sem;信号量,进程和线程都可以用的一种锁和条件变量的结合体,依靠一个变量来控制多个线程之间的调度,具体看系统编程线程笔记

pthread_mutex_lock/unlock分别对应资源+1/-1操作

此操作不可被中断

额外:阻塞队列?阻塞有两种情况,第一种是资源等待请求,例如connect阻塞等待连接;第二种是请求等待资源,例如mutex被占用后,其他请求到来,在此处阻塞等待mutex被释放,而mutex的增减为pv操作,阻塞时mutex的数量变为负数,直到将队列中的请求一一满足后才回到数量1的非阻塞态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值