Articles of multithreading

Possiamo avere condizioni di gara in un programma a thread singolo?

Potete trovare qui una spiegazione molto buona su che cosa è una condizione di gara. Ho visto di recente molte persone fare affermazioni confuse sulle condizioni della competizione e le discussioni. Ho imparato che le condizioni di gara potrebbero verificarsi solo tra i thread. Ma ho visto codice simile a condizioni di gara, in eventi […]

Va bene leggere un flag booleano condiviso senza bloccarlo quando un altro thread può impostarlo (al massimo una volta)?

Vorrei che il mio thread si chiudesse più agevolmente, quindi sto cercando di implementare un semplice meccanismo di segnalazione. Non penso di volere un thread completamente basato sugli eventi, quindi ho un lavoratore con un metodo per interromperlo con grazia usando una sezione critica Monitor (equivalente a un lock C # credo): DrawingThread.h class DrawingThread […]

WaitAll per più handle su un thread STA non è supportato

Perché ricevo questo messaggio di errore? “WaitAll per più handle su un thread STA non è supportato.” Dovrei usare [MTAThreadAttribute] attribut? Aggiornamento: non funziona con le applicazioni WPF! Nota: l’errore è sulla riga WaitHandle.WaitAll (doneEvents); Sto usando un progetto WPF standard. private void Search() { const int CPUs = 2; var doneEvents = new ManualResetEvent[CPUs]; […]

Come eseguire il debug di un’app multi-thread in IntelliJ?

Sto avendo uno strano problema con più thread e breakpoint in IntelliJ IDEA 14.0.2. Il codice dopo il punto di interruzione viene eseguito prima che si fermi su di esso. import java.util.concurrent.atomic.AtomicInteger; public class Main { private static final int NUM_CLIENTS = 1000; static class TestRunnable implements Runnable { AtomicInteger lock; @Override public void run() […]

Intervista: come assicurarsi che un thread venga eseguito dopo l’altro?

Ci sono i thread T1 , T2 e T3 , come possiamo assicurarci che il thread T2 funzioni dopo T1 e il thread T3 funzioni dopo T2 ? Questa domanda è stata posta nella mia intervista. Non ho risposto Si prega di spiegare in dettaglio.

Come funziona Keep-alive con ThreadPoolExecutor?

In seguito a una domanda postata da me, sto cercando di utilizzare ThreadPoolExecutor nella mia base di codice. Anche dopo ripetuti tentativi di comprendere dal doc dell’API Java, non sono riuscito a capire chiaramente la funzionalità / lo scopo dietro il parametro keepAliveTime da passare nel costruttore. Spero che qualcuno possa spiegarmi con un buon […]

Come impostare lo stacksize con C ++ 11 std :: thread

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

ConcurrentDictionary Pitfall – Le fabbriche dei delegati da GetOrAdd e AddOrUpdate sono sincronizzate?

La documentazione di ConcurrentDictionary non è uno stato esplicito, quindi suppongo che non ci si possa aspettare che i delegati valueFactory e updateValueFactory abbiano la loro esecuzione sincronizzata (rispettivamente dalle operazioni GetOrAdd () e AddOrUpdate () ). Quindi, penso che non possiamo implementare l’uso di risorse al loro interno che richiedono un controllo concorrente senza […]

L’applicazione ha chiamato un’interfaccia che è stata sottoposta a marshalling per un thread diverso – Windows Store App

Quindi, prima ho letto una tonnellata di thread su questo particolare problema e ancora non capisco come risolverlo. Fondamentalmente, sto provando a comunicare con una websocket e memorizzare il messaggio ricevuto in una collezione osservabile che è associata a una listview. So che sto ricevendo una risposta correttamente dal socket, ma quando tenta di aggiungerla […]

Rompi parallel.foreach?

Come posso uscire da un ciclo parallel.for ? Ho una dichiarazione piuttosto complessa che assomiglia al seguente: Parallel.ForEach(ColorIndex.AsEnumerable(), new Action((ColorIndexHolder Element) => { if (Element.StartIndex = I) { Found = true; break; } })); Usando la class parallela, posso ottimizzare questo processo di gran lunga. Però; Non riesco a capire come rompere il ciclo parallelo? […]