信号量与互斥量

来源:互联网 发布:t315hw04 vb 编辑:程序博客网 时间:2024/05/21 09:00

信号量与互斥量

简洁点,信号量用于进程之间的同步,互斥量用于进程对资源的独占。打个比方,信号量就像是一个公共厕所,里面有很多个坑位,当有空闲的坑位时,外面的人就可以进来,当最后一个人进入时,就将厕所门口的牌子翻到"已满"。当有人出去时,即将牌子翻到“空闲”。而互斥量是一个带锁的厕所,只有一把钥匙,当有钥匙的人进去之后,只能等他再出来锁上,并将钥匙交给下一个人后,下一个人才能进入。
区别:互斥量全程是由一个进程来操作的,“开锁”“上锁”。而信号量可以有其他的进程来进行操作,“翻牌子”。
信号量多用于多进程之间的有序进行,比如进程1工作完,到进程2,进程2工作完到进程3。互斥量则只用于保护进程独占的资源。
此外,互斥量可以避免优先级反转,所采取的措施是 将拥有互斥量资源的进程的优先级暂时提高到最高优先级。而与互斥量相似的二值信号量则会导致优先级反转。
信号量的访问方式:当进程访问时,信号量为0则堵塞,此时进程可以切换上下文
互斥量的访问方式:当进程访问时,会一直访问,知道锁能打开。


0 0
原创粉丝点击