Supponendo che alcuni pthread_cond_t condvar;
inizializzati correttamente con pthread_cond_init sono autorizzato a pthread_cond_broadcast it senza nessun mutex bloccato e thread bloccato con pthread_cond_timedwait su di esso?
Tendo a capire che è possibile (con un comportamento "no-op" ben definito), ma non ne sono del tutto sicuro. Ecco come sto capendo
The pthread_cond_signal() and pthread_cond_broadcast() functions have no effect if there are no threads currently blocked on cond.
Il mio scenario è un caso strano in cui nessun thread chiama pthread_cond_timedwait
su quel condvar, ma non voglio caso speciale ed evito la trasmissione. Quindi l'unico thread che usa quel condvar è quello che chiama pthread_cond_broadcast
(in altre parole, il cond var è essenzialmente inutile in questo caso, ma io cerco di evitare la duplicazione del codice ...).
PS. Il mio sistema operativo è Linux / Debian con GNU libc, ma preferisco una conferma generale sullo standard POSIX. E Chiamare pthread_cond_signal
senza mutex di blocco non è la stessa domanda.