Articles of multithreading

‘using’ statement vs ‘prova finalmente’

Ho un sacco di proprietà su cui userò i blocchi di lettura / scrittura. Posso implementarli con un try finally o una clausola using . Nel try finally avrei acquisito il blocco prima del try e rilasciato finally . Nella clausola using , vorrei creare una class che acquisisca il lock nel suo costruttore e […]

I timer C # vengono trascorsi su un thread separato?

Un System.Timers.Timer trascorre su un thread separato rispetto al thread che lo ha creato? Diciamo che ho una lezione con un timer che scatta ogni 5 secondi. Quando il timer scocca, nel metodo trascorso, alcuni oggetti vengono modificati. Diciamo che ci vuole molto tempo per modificare questo object, come 10 secondi. È ansible che mi […]

È sicuro build widget Swing / AWT NON sul thread di invio eventi?

Ho integrato l’aspetto Sostanza nella mia applicazione e ho incontrato diversi problemi relativi alle routine di controllo interno EDT (Event Dispatch Thread). La sostanza si rifiuta categoricamente di build classi di UI al di fuori dell’EDT. Ho fatto un sacco di Swing / AWT e conosco la maggior parte delle regole riguardanti l’EDT. Io uso […]

L’accesso a una variabile in C # è un’operazione atomica?

Sono stato convinto che se più thread possono accedere a una variabile, tutte le letture e le scritture su quella variabile devono essere protette dal codice di sincronizzazione, ad esempio un’istruzione “lock”, perché il processore potrebbe passare a un altro thread a metà uno scritto. Tuttavia, stavo guardando attraverso System.Web.Security.Membership usando Reflector e trovato codice […]

Cos’è un semaforo?

Un semaforo è un concetto di programmazione che viene spesso utilizzato per risolvere problemi di multi-threading. La mia domanda alla comunità: Cos’è un semaforo e come lo usi?

Scegliere tra l’invio di ExecutorService e l’esecuzione di ExecutorService

Come dovrei scegliere tra l’ invio o l’ esecuzione di ExecutorService , se il valore restituito non è la mia preoccupazione? Se provo entrambi, non ho visto differenze tra i due tranne il valore restituito. ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.execute(new Task()); ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); threadExecutor.submit(new Task());

I thread di inizializzazione statici Java sono sicuri?

Sto usando un blocco di codice statico per inizializzare alcuni controller in un registro che ho. La mia domanda è quindi, posso garantire che questo blocco di codice statico verrà chiamato solo una volta quando la class viene caricata per la prima volta? Capisco che non posso garantire quando verrà chiamato questo blocco di codice, […]

Quicksort o mergesort multithread

Come posso implementare un quicksort concorrente o un algoritmo di mergesort per Java? Abbiamo riscontrato problemi su un Mac (virtuale) a 16 picchi dove solo un core (!) Funzionava usando l’algoritmo di ordinamento Java predefinito ed era, beh, non bello vedere quella macchina molto fine essere completamente sottoutilizzata. Quindi abbiamo scritto il nostro (l’ho scritto […]

Si tratta di un pool di thread di lavoro idiomatico in Go?

Sto tentando di scrivere un semplice pool di lavoratori con goroutine. Il codice che ho scritto è idiomatico? Se no, allora cosa dovrebbe cambiare? Voglio essere in grado di impostare il numero massimo di thread di lavoro su 5 e bloccare fino a quando un lavoratore diventa disponibile se tutti e 5 sono occupati. Come […]

Quali operazioni sono atomiche in C #?

Esiste un modo sistematico per sapere se un’operazione in C # sarà atomica o no? O ci sono delle linee guida generali o regole generali?