Articles of pthreads

Proteggere una variabile con un mutex pthread garantisce che non sia anche memorizzato nella cache?

Considera una variabile semplice (globale nel mio caso): int i; Da qualche parte si accede a questa variabile pthread_mutex_lock(i_mutex); if(i == other value) { do_something(); } pthread_mutex_unlock(i_mutex); Un altro thread si aggiorna mentre contiene i_mutex . Il compilatore può memorizzare il valore di i modo da non ottenere il valore recente? Devo essere volatile?

Qual è la serratura e il concetto di rientro in generale?

Mi confondo sempre. Qualcuno potrebbe spiegare cosa significa Reentrant in diversi contesti? E perché vorresti usare il rientro e il non-rientro? Dite primitive di chiusura pthread (posix), sono rientranti o no? Quali sono le insidie ​​da evitare durante l’utilizzo? È mutex re-entrant?

Chiamata API POSIX per elencare tutti i pthread in esecuzione in un processo

Ho un’applicazione multi-thread in un ambiente POSIX / Linux – Non ho controllo sul codice che crea i pthreads. Ad un certo punto il processo – proprietario dei pthreads – riceve un segnale. Il conduttore di quel segnale dovrebbe interrompere, annullare o interrompere tutti i pthreads e registrare quanti pthreads sono in esecuzione. Il mio […]

Argomenti multipli per funzionare chiamati da pthread_create ()?

Ho bisogno di passare più argomenti a una funzione che vorrei chiamare su un thread separato. Ho letto che il modo tipico per farlo è definire una struct, passare la funzione a un puntatore a quella, e dereferenziarla per gli argomenti. Tuttavia, non riesco a farlo funzionare: #include #include struct arg_struct { int arg1; int […]

Perché pthread_cond_wait ha wakeups spurie?

Per citare la pagina man: Quando si usano variabili di condizione, esiste sempre un predicato booleano che coinvolge variabili condivise associate ad ogni condizione di attesa che è vera se il thread deve procedere. Potrebbero verificarsi ritriggerszioni spurie dalle funzioni pthread_cond_timedwait () o pthread_cond_wait (). Poiché il ritorno da pthread_cond_timedwait () o pthread_cond_wait () non […]

Thread e segnali POSIX

Ho cercato di capire la complessità di come interagiscono i thread POSIX e i segnali POSIX. In particolare, sono interessato a: Qual è il modo migliore per controllare a quale thread viene consegnato un segnale (supponendo che non sia fatale in primo luogo)? Qual è il modo migliore per dire a un altro thread (che […]

Chiamando pthread_cond_signal senza bloccare mutex

Ho letto da qualche parte che dovremmo bloccare il mutex prima di chiamare pthread_cond_signal e sbloccare il mutext dopo averlo chiamato: La routine pthread_cond_signal () viene utilizzata per segnalare (o ritriggersre) un altro thread che è in attesa sulla variabile condition. Dovrebbe essere chiamato dopo che il mutex è bloccato e deve sbloccare il mutex […]

Perché le funzioni variabili di condizione di pthreads richiedono un mutex?

Sto leggendo su pthread.h ; le funzioni relative alle variabili di condizione (come pthread_cond_wait(3) ) richiedono un mutex come argomento. Perché? Per quanto posso dire, creerò un mutex solo per usarlo come argomento? Cosa dovrebbe fare questo mutex?

Perdita ancora raggiungibile rilevata da Valgrind

Tutte le funzioni menzionate in questo blocco sono funzioni di libreria. Come posso correggere questa perdita di memoria? È elencato nella categoria ” Ancora raggiungibile “. (Ce ne sono altri 4, che sono molto simili, ma di varie dimensioni) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: […]

Importanza del flag -pthread durante la compilazione

In vari progetti C e C ++ multi thread ho visto il flag -pthread applicato sia alla fase di compilazione che a quella di collegamento mentre altri non lo usano affatto e basta passare -lpthread alla fase di collegamento. C’è qualche pericolo che non si -pthread e si colleghi con il flag -pthread – cioè […]