Disons que nous avons un thread qui veut vérifier quand un autre thread a terminé sa tâche. J'ai lu que nous devrions appeler une fonction de type wait () qui fera attendre ce thread jusqu'à ce qu'il reçoive une notification indiquant que l'autre thread est terminé. Et que c'est bien parce que cela signifie que nous n'effectuons pas de sondages coûteux.
Mais le sondage ne se produit-il pas en interne à un niveau inférieur de toute façon? C'est-à-dire que si nous faisons attendre le thread (), le noyau n'exécute-t-il pas de toute façon une interrogation pour vérifier quand l'autre thread est terminé afin qu'il puisse alors notifier le premier thread?
Je suppose que je manque quelque chose ici, quelqu'un peut-il m'éclairer?
_exit(2)
sur des systèmes POSIX-y) ou involontairement (par exemple, une erreur comme une division par zéro génère une interruption ou quelque chose d'autre appellekill(2)
). Dans les deux cas, le contrôle est explicitement restitué au système d'exploitation, qui sait quel processus était en cours d'exécution ou doit être tué. La fin d'un processus comprend la libération de ses ressources, mutex inclus. Si un mutex était détenu par le processus maintenant mort, le système d'exploitation le libérera. Si le processus était sur la liste d'attente du mutex, il sera supprimé.