Articles of multithreading

Annullamento di un’attività in sospeso in modo sincrono sul thread dell’interfaccia utente

A volte, una volta richiesta l’annullamento di un’attività in sospeso con CancellationTokenSource.Cancel , devo assicurarmi che l’attività abbia raggiunto correttamente lo stato annullato , prima che possa continuare. Molto spesso mi trovo ad affrontare questa situazione quando l’app termina e voglio cancellare tutte le attività in sospeso con garbo. Tuttavia, può anche essere un requisito […]

Come utilizzare correttamente Java Executor?

Ho utilizzato Java Executor nelle mie app multi-threading, ma non riesco a capire quando è il momento migliore per utilizzare ciascuno dei seguenti modi: 1. ExecutorService executor=Executors.newFixedThreadPool(50); executor.execute(new A_Runner(… some parameter …)); executor.shutdown(); while (!executor.isTerminated()) { Thread.sleep(100); } 2. int Page_Count=200; ExecutorService executor=Executors.newFixedThreadPool(50); doneSignal=new CountDownLatch(Page_Count); for (int i=0;i<Page_Count;i++) executor.execute(new A_Runner(doneSignal, … some parameter …)); doneSignal.await(); […]

Come ottenere l’utilizzo della cpu per thread su windows (win32)

Ricerca di funzioni API Win32, codice di esempio C ++ o Delphi che indica l’utilizzo della CPU (percentuale e / o tempo totale CPU) di un thread (non il totale per un processo). Ho l’ID del thread. So che Sysinternals Process Explorer può visualizzare queste informazioni, ma ho bisogno di queste informazioni all’interno del mio […]

Cos’è un codice di uscita del thread?

Che cosa è esattamente un codice di uscita del thread nella finestra Output durante il debug? Quali informazioni mi dà? È in qualche modo utile o solo una roba interna che non dovrebbe infastidirmi? The thread 0x552c has exited with code 259 (0x103). The thread 0x4440 has exited with code 0 (0x0). C’è forse una […]

Double Checked Locking in Singleton

ecco la mia class personalizzata per il modello singleton. in questo codice, utilizzo il blocco a doppio controllo come di seguito. Mentre leggo molti post su una fonte, dicono che il double check è utile perché impedisce a due thread simultanei di eseguire contemporaneamente due oggetti diversi. public class DoubleCheckLocking { public static class SearchBox […]

C #: in attesa di completamento di tutti i thread

Mi sto imbattendo in un modello comune nel codice che sto scrivendo, in cui devo aspettare che tutti i thread di un gruppo vengano completati, con un timeout. Il timeout dovrebbe essere il tempo necessario per il completamento di tutti i thread, quindi è sufficiente eseguire thread.Join (timeout) per ogni thread non funzionerà, poiché il […]

Ottenere l’ID del thread da un thread

Ad esempio, in C # durante il debug dei thread, puoi vedere l’ID di ciascun thread. Non sono riuscito a trovare un modo per ottenere lo stesso thread, a livello di codice. Non riuscivo nemmeno a ottenere l’ID del thread corrente (nelle proprietà di Thread.currentThread ). Quindi, mi chiedo come fa Visual Studio ad ottenere […]

Le relazioni avvenute prima con i campi volatili e i blocchi sincronizzati in Java e il loro impatto sulle variabili non volatili?

Sono ancora piuttosto nuovo al concetto di threading e cerco di capirne di più. Recentemente, mi sono imbattuto in un post sul blog What Volatile Means in Java di Jeremy Manson, in cui scrive: Quando un thread scrive su una variabile volatile e un altro thread vede quella scrittura, il primo thread indica il secondo […]

Atomic UPDATE .. SELECT in Postgres

Sto costruendo un meccanismo di messa in coda di sorta. Vi sono righe di dati che necessitano di elaborazione e un flag di stato. Sto usando un update .. returning clausola di update .. returning per gestirlo: UPDATE stuff SET computed = ‘working’ WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT […]

Come implementeresti il ​​tuo lock reader / writer in C ++ 11?

Ho una serie di strutture di dati che ho bisogno di proteggere con un blocco di lettori / scrittori. Sono consapevole di boost :: shared_lock, ma mi piacerebbe avere un’implementazione personalizzata usando std :: mutex, std :: condition_variable e / o std :: atomic in modo che possa capire meglio come funziona (e modificarlo in […]