Sto sviluppando un'applicazione in cui eseguo 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. Sto sviluppando la mia applicazione in C++ su piattaforma linux usando la libreria pthread per il threading.Come dormire o mettere in pausa un PThread in c su Linux
Qualcuno può dirmi come riesco a interrompere i thread/sospendere?
Non è davvero sicuro accedere mai a una variabile condivisa a livello globale in un ambiente multi-thread. Blocca il mutex prima di cercare "! Play" e usa anche un mutex quando imposti 'play = 0;'. In pratica questo non sarà un problema su un sistema single core, ma è sempre meglio scrivere codice corretto/a prova di futuro. –
In pratica non sarà un problema per la maggior parte dei sistemi multi-core, anche se hai ragione: questo richiede almeno un paio di barriere di memoria. Senza di loro, la pausa potrebbe richiedere un tempo arbitrariamente lungo per avere effetto. Certo, basta bloccare anche il mutex e modificheremo questa risposta per farlo. :) – LnxPrgr3
@deft_code Risposta aggiornata! Si prega di vedere il mio commento precedente però. – LnxPrgr3