Pthread_cond_signal e pthread_cond_broadcast
Nome
pthread_cond_signal, pthread_cond_broadcast - Signal o broadcast di una condizione
Sintesi
#include <pthread.h> int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond);
Descrizione
Queste due funzioni sono utilizzate per sbloccare i thread bloccati su una variabile di condizione. La chiamata a pthread_cond_signal() sblocca almeno uno dei thread che sono bloccati sulla variabile di condizione specificata cond (se ci sono thread bloccati su cond).
La chiamata a pthread_cond_broadcast() sblocca tutti i thread attualmente bloccati sulla variabile di condizione specificata cond. Se più di un thread è bloccato su una variabile di condizione, la politica di scheduling determina l'ordine in cui i thread vengono sbloccati.
Quando ciascun thread sbloccato come risultato di una pthread_cond_signal() o pthread_cond_broadcast() ritorna dalla sua chiamata a pthread_cond_wait() o pthread_cond_timedwait(), il thread possiede il mutex con cui ha chiamato pthread_cond_wait() o pthread_cond_timedwait(). I thread sbloccati contendono per il mutex secondo la politica di scheduling (se applicabile), come se ciascuno avesse chiamato pthread_mutex_lock().
Le funzioni pthread_cond_signal() o pthread_cond_broadcast() possono essere chiamate da un thread indipendentemente dal possesso del mutex che i thread che chiamano pthread_cond_wait() o pthread_cond_timedwait() hanno associato con la variabile di condizione durante le loro attese; tuttavia, se è richiesto un comportamento di scheduling prevedibile, allora quel mutex è bloccato dal thread che chiama pthread_cond_signal() o pthread_cond_broadcast().
Le funzioni pthread_cond_signal() e pthread_cond_broadcast() non hanno effetto se non ci sono thread attualmente bloccati su cond.
Valore di ritorno
Se hanno successo, le funzioni pthread_cond_signal() e pthread_cond_broadcast() restituiscono zero. In caso contrario, viene restituito un numero di errore per indicare l'errore.
Errori
Le funzioni pthread_cond_signal() e pthread_cond_broadcast() possono fallire se:
- [EINVAL] Il valore cond non si riferisce a una variabile di condizione inizializzata.
The Single UNIX ® Specification, Version 2 Copyright © 1997 The Open Group
-
Sistemi operativi - Syscall msgget
-
Sistemi operativi - Syscall msgrcv
-
Sistemi operativi - Syscall printf
-
Sistemi operativi - Syscall pthread_exit