Digamos que tenhamos um thread que deseja verificar quando outro thread termina sua tarefa. Eu li que devemos chamar uma função do tipo wait () que fará com que esse thread aguarde até receber uma notificação de que o outro thread foi concluído. E isso é bom porque significa que não estamos realizando pesquisas caras.
Mas as pesquisas não estão acontecendo internamente em um nível mais baixo? Ou seja, se fizermos o thread wait () o kernal não executar a pesquisa de qualquer maneira para verificar quando o outro thread for concluído, para que ele possa notificar o primeiro thread?
Presumo que estou perdendo algo aqui, alguém pode me esclarecer?
_exit(2)
sistemas POSIX-y) ou involuntariamente (por exemplo, um erro como uma divisão por zero gera uma interrupção ou algo mais chamakill(2)
). Em ambos os casos, o controle é explicitamente devolvido ao sistema operacional, que sabe qual processo estava em execução ou deve ser morto. O trabalho de finalizar um processo inclui liberar seus recursos, incluindo mutexes. Se um mutex foi mantido pelo processo agora morto, o sistema operacional o liberará. Se o processo estiver na lista de espera do mutex, ele será removido.