Articles of pthreads

È ansible determinare il thread che contiene un mutex?

In primo luogo, uso la libreria pthread per scrivere il programma C multithreading. I fili erano sempre appesi ai loro mutex attesi. Quando uso l’utilità strace per trovare una discussione è nello stato FUTEX_WAIT , voglio sapere quale thread tiene quel mutex al momento. Ma non so come potrei farcela. Ci sono programmi di utilità […]

variabile di condizione – perché chiamare pthread_cond_signal () prima di chiamare pthread_cond_wait () è un errore logico?

È scritto nel tutorial sui thread POSIX https://computing.llnl.gov/tutorials/pthreads/ che è un errore logico. la mia domanda è perché è un errore logico? Nel mio programma ho bisogno di usare questi segnali, tuttavia non posso garantire che ci sarà un thread che sarà nello stato _cond_wait. Ho provato a testarlo e non succede nulla. Questo può […]

Come posso ottenere un ID thread da un pthread_t arbitrario?

Ho un pthread_t, e mi piacerebbe cambiare la sua affinità CPU. Il problema è che sto usando glibc 2.3.2, che non ha pthread_setaffinity_np () . Va bene, però, perché pthread_setaffinity_np () è esso stesso un wrapper di sched_setaffinity () , che può essere chiamato passando un ID di thread invece di un ID di processo […]

Pthread_cond_wait (& cond_t, & mutex); sbloccare e quindi bloccare il mutex?

Sto usando pthread_cond_wait(&cond_t, &mutex); nel mio programma e mi chiedo perché questa funzione abbia bisogno come secondo parametro di una variabile mutex. Il pthread_cond_wait() sblocca il mutex all’inizio (inizio dell’esecuzione pthread_cond_wait() ) e poi bloccato quando finisce (appena prima di lasciare pthread_cond_wait() )?

Thread POSIX staccato e joinable

Ho usato la libreria pthread per creare e unire i thread in C. Quando dovrei creare un thread come distaccato, fin dall’inizio? Offre un vantaggio in termini di prestazioni rispetto a un thread collegabile? È legale non fare un pthread_join () su un thread joinable (di default)? O dovrebbe mai usare una tale discussione la […]

Annullare una discussione usando pthread_cancel: buona pratica o ctriggers

Ho un programma C ++ su Linux (CentOS 5.3) che genera più thread che sono in un ciclo infinito per eseguire un lavoro e dormire per determinati minuti. Ora devo cancellare i thread in esecuzione nel caso in cui arrivi una nuova notifica di configurazione e inizi appena un nuovo set di thread, per il […]

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 […]