当一个进程调用一个send原语时,在消息开始发送后,发送进程便处于
阻塞状态,直至消息完全发送完毕,
send原语的后继语句才能继续执行。当一个进程调用一个receive原语时,并不立即返回控制,而是等到把消息实际接收下来,并把它放入指定的接收区,才返回控制,继续执行该原语的后继指令。在这段时间它一直处于
阻塞状态。上述的send和receive被称为
同步通信原语或
阻塞通信原语。
事件作为一种
同步原语,是计算机科学中的一种同步机制,用来指示等待中的进程特定条件已经变为真。
Microsoft Windows操作系统提供的事件
内核对象,状态为signaled对应于状态为真;使用WaitForObject及相关系统函数实现wait操作,SetEvent系统函数实现set操作,ResetEvent系统函数实现clear操作。在创建事件对象时可以设置为“自动重置事件”或“手动重置事件”。当一个手动重置事件被触发的时候,正在等待该事件的所有线程都将变成可调度状态;而当一个自动重置事件被触发的时候,只有一个正在等待该事件的线程会变成可调度状态,该事件对象自动变为未触发态。