打印
[嵌入式Linux]

临界区与互斥量

[复制链接]
1018|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
千岁寒|  楼主 | 2018-8-13 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通常有4种进程或线程同步互斥的控制方法(如上临界区是一种方式):
            临界区、互斥量、信号量、事件
其中临界区和互斥量功能最为相似,下面着重介绍二者。

临界区相关概念:
      临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。

     临界区每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他进程进入。不论是硬件临界资源还是软件临界资源,多个进程必须互斥的对它进行访问。

     相关临界区多个进程涉及到同一个临界资源的的临界区称为相关临界区。使用临界区时,一般不允许其运行时间过长,只要运行在临界区的线程还没有离开,其他所有进入此临界区的线程都会被挂起而进入等待状态,并在一定程度上影响程序的运行性能。

临界区最大的特色是其同步速度很快,但是其只能用来同步本进程内的线程,而不可用来同步多个进程中的线程。


互斥量相关概念:
    互斥量和临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,互斥量比临界区负责,并且互斥量是可以命名的,因此互斥量不仅仅可以用于同一应用程序不同线程中资源的同步,也可以用于不同应用程序的线程之间实现对资源的同步。因此互斥量可以在整个系统中被任意进程的任意线程访问到,但它严格限定只有获取了互斥量的线程才能释放该互斥量。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

244

帖子

4

粉丝