Les threads détachés et les conséquences de la sortie de Main()
Considérez un scénario dans lequel un thread détaché est lancé et continue son exécution après sa norme de contrôle :: l'objet thread est hors de portée. Le silence potentiel de la norme sur le sujet a suscité des inquiétudes : que devient un thread détaché lorsque la fonction main() se termine ?
Comportement non défini ou effets définis ?
Le la norme manque de lignes directrices explicites à ce sujet. Cependant, la réponse à la question initiale apporte des éclaircissements :
Rejoindre Threads détachés et gestionnaires de signaux
En réponse à la deuxième question, la réponse affirme que les threads détachés peuvent être joints via la famille de fonctions *_at_thread_exit. Ces fonctions permettent de signaler la fin de l'exécution d'un thread tout en garantissant que tous les destructeurs ont été invoqués.
Cependant, l'emploi de variables de condition ou de sémaphores seuls est insuffisant pour une jointure fiable. La norme impose des limitations sur l'exécution du code pendant la gestion du signal, excluant l'utilisation de variables de condition, sauf autorisation explicite de l'implémentation.
Conséquences sur le comportement du programme
À la lumière de celles-ci observations, les contraintes de la norme sur le comportement des threads à la sortie de main() dictent des actions spécifiques aux développeurs :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!