utilizzando pthread_cond_broadcast senza mutex o thread in attesa?

0

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.

    
posta Basile Starynkevitch 19.04.2016 - 13:11
fonte

0 risposte

Leggi altre domande sui tag