解决线程同步问题的思路

[size=large][color=red]线程同步机制
操作系统中实现线程同步有一种工具称为信号量和PV操作,它的指导思想源于采用多种颜色信号灯管理交通的方法,描述如下:
(1)背景
多个线程需要对同一个共享变量进行操作,所以多个线程间必须互斥地执行,即这些操作方法必须是互斥的。
(2)设置信号量
为这个共享变量约定一个信号量(semaphore),设置信号量有多种状态,就像交通信号灯有多种颜色一样。信号量状态的设置有多种方式,既可以有两种状态,也可以有多种状态。两种状态用一个布尔值即可表示,true表示可执行,false表示不可执行,就像“红灯停,绿灯行”。多种状态表示一种轮流执行方式,如n为1时,约定线程1可执行;n为2时,约定线程2可执行,等等。
测试信号量状态的操作称为P操作,改变信号量状态的操作称为V操作,这两种操作互斥执行的,并且执行时不能被打断。
(3)线程根据信号量状态而执行
多个线程间彼此根据信号量的状态确定该谁执行,当一个线程开始执行时,它先要测试信号量的状态,如果状态合适,则执行,进行相关操作并更改信号量状态,唤醒其他等待线程执行;否则等待,使线程自己处于阻塞状态,直到被唤醒再次执行。
这样,交互的并发线程之间通过交换信号来达到调整相互速率,保证线程协调运行的目的。利用信号量和P、V操作既可以解决并发进程的竞争问题,又可以解决并发进程的协作问题。[/color][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值