pthread_suspend_np, pthread_unsuspend_np et pthread_continue_np Sous-routine

Objectif

Interrompt et reprend l'exécution de la pthread spécifiée par thread.

Bibliothèque

Bibliothèque d'unités d'exécution (libpthreads.a)

Syntaxe

#include <pthread.h>

pthread_t thread;
int pthread_suspend_np(thread)
int pthread_unsuspend_np (thread);
int pthread_continue_np(thread);

Descriptif

La sous-routine pthread_suspend_np interrompt immédiatement l'exécution du pthread spécifié par thread. En cas de retour réussi de pthread_suspend_np, le pthread suspendu n'est plus en cours d'exécution. Si pthread_suspend_np est appelé pour un pthread qui est déjà suspendu, le pthread est inchangé et pthread_suspend_np est renvoyé avec succès.

Un interblocage peut se produire si pthread_suspend_np est utilisé avec les fonctions pthread suivantes.

pthread_getrusage_np
pthread_cancel
pthread_detach
pthread_join
pthread_getunique_np
pthread_join_np
pthread_setschedparam
pthread_getschedparam
pthread_kill
Pour éviter les interblocages, PTHREAD_SUSPENDIBLE=ON doit être défini.

La routine pthread_unsuspend_np décrémente le nombre d'interruptions et une fois que le nombre est égal à zéro, elle reprend l'exécution d'une unité d'exécution suspendue. Si pthread_unsuspend_np est appelé pour un pthread qui n'est pas suspendu, le pthread n'est pas modifié et pthread_unsuspend_np renvoie un résultat positif.

La routine pthread_continue_np efface le nombre d'interruptions et reprend l'exécution d'une pthread suspendue. Si pthread_continue_np est appelé pour un pthread qui n'est pas suspendu, le pthread n'est pas modifié et pthread_continue_np renvoie un résultat positif.

Un pthread suspendu ne sera pas réveillé par un signal. Le signal reste en attente jusqu'à ce que l'exécution de pthread soit reprise par pthread_continue_np.

Remarque: L'utilisation de pthread_suspend_np ne doit être utilisée que par les utilisateurs avancés car une utilisation incorrecte de cette sous-commande peut entraîner un blocage de l'application ou l'unité d'exécution cible peut être suspendue en détenant des verrous d'application.

Paramètres

Article Descriptif
unité d"exécution Indique l'unité d'exécution cible.

Valeurs renvoyées

La valeur zéro est renvoyée en cas de réussite. Une valeur différente de zéro indique une erreur.

Codes d'erreur

Si l'une des conditions suivantes se produit, pthread_suspend_np, pthread_unsuspend_np et pthread_continue_np échouent et renvoient la valeur correspondante:

Article Descriptif
ESRCH L'unité d'exécution cible spécifiée par l'attribut thread est introuvable dans le processus en cours.