Ho cercato di familiarizzare con la libreria std :: thread in C ++ 11 e sono arrivato a un ostacolo. Inizialmente provengo da uno sfondo di thread posix, e mi chiedevo come si configura la dimensione dello stack di std :: thread prima della costruzione, dato che non riesco a trovare alcun riferimento all’esecuzione di […]
Sto sviluppando un’applicazione in cui faccio il multithreading. Uno dei miei thread di lavoro mostra le immagini sul widget. Un altro thread suona il suono. Voglio interrompere / sospendere / mettere in pausa / sospendere i thread su un evento click del pulsante. È come quando clicchiamo sul pulsante play / pause del lettore video. […]
Sono solo curioso di sapere come vengono implementate le funzioni relative alla sincronizzazione tra i thread all’interno di Unix. Ad esempio, cosa succede quando chiamo pthread_mutex_lock ? Ci sono dei puntatori in uso? Un riferimento al codice sorgente sarebbe davvero d’aiuto.
Ho alcune domande riguardanti i blocchi di lettura-scrittura in POSIX Pthreads su un sistema * nix, ad esempio Linux. Vorrei sapere qual è il bias di default per il blocco di lettura read, cioè preferisce le letture al di sopra delle scritture o viceversa? Fornisce qualche api per modificare questo comportamento predefinito. Il pthread di […]
Sto attualmente scrivendo un semplice webserver in C per un corso che sto facendo. Un requisito è per noi implementare un pool di thread per gestire le connessioni utilizzando pthreads. So come farei in modo approssimativo (chiamando accept in un thread principale e passando il descrittore di file a un thread gratuito), tuttavia il mio […]
C’è una soluzione più semplice nel porting di un evento di reimpostazione manuale di windows in pthread, che una variabile condizionale pthread + pthread mutex + a flag se l’evento è impostato o non impostato?
Ho creato un pthread e installato un gestore di segnale al suo interno, esattamente come facciamo nella funzione main( ) . Il gestore di segnale del thread è una funzione separata. Sorprendentemente, non funziona, cioè il gestore del segnale del thread non è in grado di rilevare i segnali. Ecco il codice: #include #include #include […]
C’è un modo per impostare il nome di un thread in Linux? Il mio scopo principale è di essere utile durante il debug, e anche bello se quel nome fosse esposto attraverso ad esempio /proc/$PID/task/$TID/…
Voglio semplicemente passare il valore di un intero a un thread. Come lo posso fare? Provai: int i; pthread_t thread_tid[10]; for(i=0; i<10; i++) { pthread_create(&thread_tid[i], NULL, collector, i); } Il metodo thread ha questo aspetto: void *collector( void *arg) { int a = (int) arg; … Ottengo il seguente avviso: warning: cast from pointer to […]
Quando chiamo pthread_exit da main , il programma non finisce mai. Mi aspettavo che il programma finisse, visto che stavo uscendo dall’unica thread del programma, ma non funzionava. Sembra appeso. #include #include #include int main(int argc, char *argv[]) { printf(“-one-\n”); pthread_exit(NULL); printf(“-two-\n”); } Process Explorer mostra che il thread (solo) è in stato Wait:DelayExecution . […]