En mi poste pasado discutí el uso de WaitForSingleObject en lo referente a mutexes y a maneras posibles de ejecutar funcionalidad equivalente al virar tal código hacia el lado de babor a GNU/Linux. En este poste describiré el uso de este API con los objetos del acontecimiento en Microsoft Windows y sugeriré maneras posibles de fijar tal código a GNU/Linux o a Unix.
Primero, un cierto fondo en objetos del acontecimiento. Un objeto del acontecimiento es apenas otro tipo de objeto del despachador del núcleo de Windows. De una codificación prespective, un objeto del acontecimiento es un objeto de la sincronización que encapsula uno o más objetos del despachador del núcleo y cuya semántica de la sincronización es accesible vía WaitForSingleObject y sus primos. En un momento dado un objeto de la sincronización nonsignaled o se señala, es decir el objeto puede solamente estar en uno de dos estados posibles.
Toda la familia de WaitFor de APIs incluyendo la espera de WaitForSingleobject en una manija del objeto o las manijas hasta algunos criterios especificados se resuelve. Los dos criterios básicos para todos estos APIs son el estado señalado del objeto en cuya manija está esperando y un valor del time out. Así un hilo de rosca que llama esperas de este API hasta que el objeto especificado incorpora el estado señalado o el descanso especificado ha expirado. Se utiliza poco o nada de tiempo CPU cuando tal hilo de rosca está en el estado de espera.
En el caso de acontecimientos, un CreateEvent o un OpenEvent vuelve una manija a un objeto del acontecimiento. Cuando un acontecimiento está en el estado señalado significa que ése el acontecimiento tiene la capacidad de lanzar uno o más hilos de rosca que esperan este acontecimiento particular que se señalará. Cuando un acontecimiento está en el estado nonsignaled no lanzará ninguÌn hilo de rosca que espera. El estado de un acontecimiento nonsignaled inicialmente. Un estado de objeto del acontecimiento es fijado explícitamente a señalado por SetEvent o PulseEvent. Los objetos del acontecimiento también se utilizan en operaciones traslapadas tales como lectura en un zócalo, en este caso el estado de objeto del acontecimiento es fijado a señalado por el núcleo algo que por un uso.
Los acontecimientos también vienen en dos tipos reajustados. Si un acontecimiento es un acontecimiento del manual-reajuste, después toda la vuelta de WaitForSingleObjects que espera ese acontecimiento si están configurado tan. Es decir un acontecimiento del manual-reajuste puede accionar la acción por uno o más WaitForSingleObject o sus primos. Un estado de objeto del acontecimiento del manual-reajuste se debe reajustar explícitamente a nonsignaled por ResetEvent.
Para un objeto del acontecimiento del auto-reset, WaitForSingleObject y es relaciones reajustado

























