web-dev-qa-db-fra.com

Threads POSIX détachés et jointifs

J'utilise la bibliothèque pthread pour créer et joindre des threads en C.

  1. Quand dois-je créer un fil comme détaché, dès le départ? Offre-t-il un avantage en termes de performances par rapport à un thread jointif?

  2. Est-il légal de ne pas faire une pthread_join() sur un thread joignable (par défaut)? Ou un tel thread doit-il toujours utiliser la fonction detach() avant pthread_exit() ing?

55
user191776
  1. Créez un thread détaché lorsque vous savez que vous ne voudrez pas l'attendre avec pthread_join(). Le seul avantage en termes de performances est que lorsqu'un thread détaché se termine, ses ressources peuvent être libérées immédiatement au lieu d'avoir à attendre que le thread soit joint avant de libérer les ressources.

  2. Il est "légal" de ne pas rejoindre un thread joignable; mais ce n'est généralement pas conseillé car (comme indiqué précédemment) les ressources ne seront pas libérées tant que le thread ne sera pas joint, elles resteront donc attachées indéfiniment (jusqu'à la fin du programme) si vous ne le rejoignez pas.

73
Jonathan Leffler