Event对象
Event对象是一个同步对象,它的状态可以被SetEvent函数显式的设置成为signaled状态。下面是event对象的两种类型:
对象 |
描述 |
手动重置event |
Event对象的状态会保持signaled状态,除非显式的调用ReseEvent函数将它重置为nonsignaled状态。一旦它的状态被设置成为signaled,所有等待它的线程都将被释放 |
自动重置event |
Event对象的状态会保持signaled状态,直到等待他的线程被释放,在这个时候,系统自动将它的状态设置为nonsignaled。 如果没有线程在等待,event对象的状态将一直是signaled。如果有多个线程等待这个event,只有一个线程会被释放。不要以为这个遵循先进先出的顺序。外部的事件,比如内核模式的APCs会改变这个等待顺序。 |
线程可以使用CreateEvent和CreateEventEx函数来创建event对象。线程声明这个对象的初始状态,是一个自动重置还是一个手动重置event对象。线程也可以给event对象起个名字,其他进程中的线程就可以利用OpenEvent函数打开一个有名字的event对象的句柄。查看“进程间同步”,以了解更多的mutex,event,semaphore和timer对象的名称。