He estado leyendo sobre acceso multihilo y recursos compartidos y uno de los muchos (para mí) nuevos conceptos es el bloqueo mutex. Lo que parece que no puedo averiguar es qué está sucediendo realmente con el hilo que encuentra que una "sección crítica" está bloqueada. Dice en muchos lugares que el hilo se "bloquea", pero ¿qué significa eso? ¿Está suspendido y se reanudará cuando se levante el bloqueo? ¿O lo intentará de nuevo en la próxima iteración del "ciclo de ejecución"?Bloqueo Mutex: ¿qué significa "bloqueo"?
La razón por la que pregunto es porque quiero que los eventos proporcionados por el sistema (mouse, teclado, etc.), que (al parecer) se entregan en el hilo principal, se manejen en una parte muy específica del ciclo de ejecución de mi hilo secundario Entonces, sea cual sea el evento entregado, hago cola en mi propia estructura de datos. Obviamente, la estructura de datos necesita un bloqueo mutex porque está siendo modificado por ambos hilos. La pieza de rompecabezas que falta es: ¿qué sucede cuando un evento se entrega en una función en el hilo principal, quiero ponerlo en cola, pero la cola está bloqueada? ¿Se suspenderá el hilo principal o saltará por encima de la sección bloqueada y saldrá del alcance (perdiendo el evento)?
El ciclo de ejecución principal no es lo que impulsa la aplicación. Estoy en Mac OSX y uso un CVDisplayLink que efectivamente está generando un hilo separado (alta prioridad) que a su vez impulsará mi ciclo de ejecución. Los eventos, tal como lo entiendo, se entregarán en el hilo principal, por lo que la sincronización parece estar en orden. – zmippie