依旧的博客

技术学习

C++博客 首页 新随笔 联系 聚合 管理
  17 Posts :: 1 Stories :: 2 Comments :: 0 Trackbacks
最原始的多线程通信机制是全局变量,但是两个线程对同一变量的并发操作可能是冲突的,所谓冲突是指一种并发调度不等价于任何串行调度。可以通过特定的系统调用保证线程对全局变量的操作具有原子性。这时全局变量成为一种可用的通信机制,根据通信的需要设计通信的协议,两个线程分别执行,就可以完成合作。比如辅线程重复某个过程直到主线程通知它终止,可以约定全局变量为特定值时辅线程终止,让辅线程在循环中检测全局变量,主线程设置全局变量通知辅线程终止。这种机制的缺点是接收通知的一方必须不断检测全局变量,事件机制由此进行了改进。接收方可以在事件上阻塞,等待特定的通知,等待的时间可以设定,如果设为0,则事件退化为全局变量。事件只有两种状态,有信号或无信号,这相对全局变量是一个限制。事件实现了单向的消息,这是最基本的机制。在实际通信活动中还有许多同步问题,每一方不但根据特定的消息采取相应的动作,还在收到消息后发出反馈消息。通信是一个交互和持续的过程。临界段机制就是为此而提供的。临界段的局限是只有两种状态:锁定和解锁,在很多的通信中,需要进一步量化的状态,这就产生了信号量机制。
posted on 2006-05-05 00:15 依旧的博客 阅读(827) 评论(0)  编辑 收藏 引用 所属分类: 编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理