欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 内核学习——4、并发、竞争、同步与互斥

内核学习——4、并发、竞争、同步与互斥

2025/10/8 4:01:59 来源:https://blog.csdn.net/wangyongh/article/details/139806601  浏览:    关键词:内核学习——4、并发、竞争、同步与互斥

linux中四种进程或线程同步互斥的方法:

1、临界区:多线程串行化访问公共资源的一段代码
2、互斥量:互斥对象只有一个
3、信号量:控制一个有限数量的用户资源,进程上下文,适合长时间访问共享资源情况
4、自旋锁:适合短时间访问共享资源情况
5、事件:通知线程有一些事件已经发生,从而启动后面任务的开始

1、临界区:atomic

某一时刻只有一个线程能访问关键数据的简便方法。原子操作共享资源。临界区外的线程会被挂起进入等待状态,会影响性能,所以不允许其运行事件太长

2、互斥量:mutex_lock

只有拥有互斥对象(即互斥量)的线程才具有访问共享资源的权限,互斥量只有一个,所以不能被多个线程同时访问
同应用不同线程可以使用共享,不同应用程序间的线程之间也可以使用它来共享

3、信号量:semaphore,down、up

信号允许多个线程同时使用共享资源,和操作系统中PV操作相同,它有同时访问共享资源线程的最大数目,可以使等待资源进程进入休眠状态
信号量S是个整数:
P操作申请资源:
S减1,若减1之后仍大于等于0,则进程继续执行,若减1之后小于0,该进程被阻塞到信号对应的队列中,然后转入进程调度
V操作释放资源:
S加1,相加之后大于0,进程继续执行,若相加之后小于等于0,从信号等待队列中唤醒一个等待进程,然后再返回原进程继续执行或转入进程调度

4、自旋锁:spin_lock

保护共享资源,实现线程同步。若是某线程没有获得锁时会不断的询问和判断自旋锁持有者是否释放了锁,阻塞了,CPU空转

5、事件:

事件对象也可以通过通知操作方式保持线程同步。并可以实现不同进程中的线程同步操作

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词