Digamos que tenemos un hilo que quiere verificar cuando otro hilo termina su tarea. He leído que deberíamos llamar a una función de tipo wait () que hará que este hilo espere hasta que reciba una notificación de que el otro hilo ha terminado. Y eso es bueno porque significa que no estamos realizando encuestas costosas.
Pero, de todos modos, ¿las encuestas no se realizan internamente en un nivel inferior? Es decir, si hacemos que el hilo espere (), ¿no está el kernel realizando un sondeo de todos modos para verificar cuándo el otro hilo está terminado para que luego pueda notificar al primer hilo?
Supongo que me estoy perdiendo algo aquí, ¿alguien puede iluminarme?
_exit(2)
a los sistemas POSIX-y) o involuntariamente (por ejemplo, un error como una división por cero genera una interrupción o algo más llamakill(2)
). En cualquier caso, el control se devuelve explícitamente al sistema operativo, que sabe qué proceso se estaba ejecutando o qué se debe matar. El trabajo de finalizar un proceso incluye liberar sus recursos, incluidos mutexes. Si el proceso ahora inactivo retuvo un mutex, el sistema operativo lo liberará. Si el proceso estaba en la lista de espera de mutex, se eliminará.