同步原语

同步原语

当一个进程调用一个send原语时,在讯息开始传送后,传送进程便处于阻塞状态,直至讯息完全传送完毕,send原语的后继语句才能继续执行。当一个进程调用一个receive原语时,并不立即返回控制,而是等到把讯息实际接收下来,并把它放入指定的接收区,才返回控制,继续执行该原语的后继指令。在这段时间它一直处于阻塞状态。上述的send和receive被称为同步通信原语或阻塞通信原语。

事件作为一种同步原语,是计算机科学中的一种同步机制,用来指示等待中的进程特定条件已经变为真。

事件对象一般具有下述操作:

  • wait- 执行中的执行绪被挂起直到事件为真。如果执行wait时事件已为真,则空操作。

  • set- 设定事件状态为真,所有等待此事件的进程变为可调度。

  • clear- 设定事件状态为假。

Microsoft Windows作业系统提供的事件核心对象,状态为signaled对应于状态为真;使用WaitForObject及相关係统函式实现wait操作,SetEvent系统函式实现set操作,ResetEvent系统函式实现clear操作。在创建事件对象时可以设定为“自动重置事件”或“手动重置事件”。当一个手动重置事件被触发的时候,正在等待该事件的所有执行绪都将变成可调度状态;而当一个自动重置事件被触发的时候,只有一个正在等待该事件的执行绪会变成可调度状态,该事件对象自动变为未触发态。

事件类似于管程中的条件变数。

相关词条

相关搜索

其它词条