Hay un tipo de sincronización que existe entre hilos llamados bloqueos. En este caso, el hilo necesita exclusión mutua. Requiere un hilo para ejecutar a la vez. Luego, también se requiere un patrón común cuando se interactúan múltiples hilos. Ellos están - esperando y señalización. Un hilo esperará hasta que otro hilo termine su trabajo. Después de completar la ejecución de este hilo, el hilo de espera puede ejecutarse en el procesador. Para este tipo de sincronización de hilos, necesitamos otra técnica, llamada ocupado esperando algunas variables. Para esto, necesitamos una nueva sincronización primitiva llamadas variables de condición.
Este concepto de hilo está disponible en diferentes sistemas operativos. Pero iremos al nombre, las variables de condición que se aplican como biblioteca PTHREAD en el sistema operativo Linux
La función pthread_cond_wait () es un componente de espera. Esta función de forma predeterminada realiza la acción de desbloqueo.
Programación Ejemplo-1:
En este ejemplo de programación veremos cómo se ejecuta esta función:
#incluirProducción:
Explicación
En este ejemplo de programación existen dos procesos llamados hilo principal y un hilo infantil. Aquí, el padre quiere esperar al niño. Después de completar la ejecución del proceso infantil, los padres comienzan su ejecución.
Para el interior del main () creamos el hilo de los padres y el hijo. Child Thread ejecuta la función llamada Child (). Entonces el hilo principal llama a la función unirse. Este unión () básicamente verifica que el niño esté listo. De lo contrario, esperará usando la función pthread_cond_wait (). Cuando el niño corre, llama a la salida (). Cuando se realice la ejecución del niño, el valor de la variable realizado será 1. Luego, llama a la variable de la señal de la condición. Después de eso, la ejecución del hilo principal comenzará.
Espera y sintaxis de señal:
void thr_exit ()¿Qué pasa si no obtenemos un bloqueo?? Ocurrirá una condición de carrera - despertar perdido.
Programación Ejemplo-2:
En este ejemplo de programación veremos otro uso de pthread_cond_wait fuction.
#incluirProducción:
Explicación
Aquí, veremos la aplicación de la función pthread_cond_wait (). Es como cuando alguien quiere llenar el combustible su auto. Tiene que esperar hasta que su auto se llene de combustible. Para esto, creamos dos hilos. Uno para llenar el combustible en el automóvil y para el auto. Definiremos dos funciones. Una función de combustible () que determina cuándo llenar el automóvil con combustible y otra es la función de vehículo () para obtener combustible. El tipo que quiere llenar el combustible en su automóvil tiene que esperar hasta que el combustible se llene.
Dentro de la función Main () crearemos dos hilos para la función de combustible () y para vehículo (). Ahora, crearemos una variable de condición para esperar la condición. Para esto veremos la salida. Cuando las funciones completen su ejecución, destruiremos estos hilos.
Conclusión
La función pthread_cond_wait () notifica cuándo hemos hecho algún programa con la ayuda de múltiples hilos. Esta función hará algunas variables de condición para manejar estos hilos. En realidad, las características de esta función dependen totalmente del principio de esperar y señalar teoría.