Articles of multithreading

Come posso implementare un contatore ABA con c ++ 11 CAS?

Sto implementando una coda lock-free basata su questo algoritmo , che usa un contatore per risolvere il problema ABA. Ma non so come implementare questo contatore con c ++ 11 CAS. Ad esempio, dall’algoritmo: E9: if CAS(&tail.ptr->next, next, ) È un’operazione atomica, ovvero se tail.ptr->next è uguale a next , lascia tail.ptr->next point to node […]

Gestione delle eccezioni dalle attività di ExecutorService di Java

Sto cercando di utilizzare la class ThreadPoolExecutor di Java per eseguire un numero elevato di attività pesanti con un numero fisso di thread. Ognuna delle attività ha molte posizioni durante le quali potrebbe non riuscire a causa di eccezioni. Ho sottoclassato ThreadPoolExecutor e ho sovrascritto il metodo afterExecute che dovrebbe fornire tutte le eccezioni non […]

Java Wait and Notify: IllegalMonitorStateException

Non capisco completamente come funzionano wait e notify (di Object ), e di conseguenza sono costretto a ridurre i miei tentativi nella seguente sezione di codice. Main.java: import java.util.ArrayList; class Main { public static Main main = null; public static int numRunners = 4; public static ArrayList runners = null; public static void main(String[] args) […]

Eliminazione del thread dopo un limite di tempo specificato in Java

C’è un modo per uccidere un thread figlio dopo un limite di tempo specificato in Java? Modifica: Anche questo particolare thread potrebbe essere bloccato nel peggiore dei casi (Thread è usato per attendere una modifica del file e bloccare fino a quando si verifica questo evento), quindi non sono sicuro che interrupt () avrà successo?

Confronta usando Thread. Sleep e Timer per l’esecuzione ritardata

Ho un metodo che dovrebbe essere ritardato in esecuzione per un determinato periodo di tempo. Dovrei usare Thread thread = new Thread(() => { Thread.Sleep(millisecond); action(); }); thread.IsBackground = true; thread.Start(); O Timer timer = new Timer(o => action(), null, millisecond, -1); Ho letto alcuni articoli sull’utilizzo di Thread.Sleep è un cattivo design. Ma non […]

Quali sono le opzioni di collegamento corrette per usare std :: thread in GCC in linux?

Ciao sto provando ad usare std::thread con G ++. Ecco il mio codice di prova #include #include int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Si compila, ma quando provo a eseguirlo il risultato è: terminate called after throwing an instance of ‘std::system_error’ what(): Operation not permitted Aborted La mia versione del compilatore: […]

Esegui codice sul thread dell’interfaccia utente in WinRT

Come posso eseguire il codice sul thread dell’interfaccia utente in WinRT (Windows 8 Metro)? Il metodo Invoke non esiste.

Cosa succede a un thread separato quando main () si chiude?

Supponiamo che io stia avviando uno std::thread e poi lo detach() , quindi il thread continua ad essere eseguito anche se lo std::thread che una volta lo rappresentava, esce dallo scope. Supponiamo inoltre che il programma non disponga di un protocollo affidabile per unire il thread separato 1 , quindi il thread staccato viene ancora […]

Qual è il modo consigliato per generare i thread da un servlet in Tomcat

Probabilmente una ripetizione! Sto usando Tomcat come server e voglio sapere qual è il modo migliore per generare i thread nel servlet con risultati deterministici. Sto eseguendo alcuni aggiornamenti a lungo termine da un’azione servlet e vorrei che la richiesta fosse completata e gli aggiornamenti avvenissero in background. Invece di aggiungere un middleware di messaggistica […]

Come annullare l’esecuzione di uno SwingWorker?

Attualmente ho due thread SwingWorker che fanno il lavoro sullo sfondo. Se si verifica un’eccezione, il metodo smette di funzionare, ma il thread continua a funzionare. Come faccio a fermare l’esecuzione e ad uccidere il thread di doInBackground() se si verifica un’eccezione? this.cancel(true) non distrugge / chiude il thread. Come posso raggiungere questo objective? @Override […]