Articles of multithreading

ReaderWriterLock vs lock {}

Per favore, spiega quali sono le principali differenze e quando dovrei usare cosa. L’attenzione per le applicazioni web multi-threaded.

Multi-threading con. Net HttpListener

Ho un ascoltatore: listener = new HttpListener(); listener.Prefixes.Add(@”http://+:8077/”); listener.Start(); listenerThread = new Thread(HandleRequests); listenerThread.Start(); E sto gestendo le richieste: private void HandleRequests() { while (listener.IsListening) { var context = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener); context.AsyncWaitHandle.WaitOne(); } } private void ListenerCallback(IAsyncResult ar) { var listener = ar.AsyncState as HttpListener; var context = listener.EndGetContext(ar); //do some stuff } Vorrei […]

Evitare i problemi di Invoke / BeginInvoke nella gestione degli eventi WinForm cross-thread?

Sono ancora afflitto da threading in background in un’interfaccia utente di WinForm. Perché? Ecco alcuni dei problemi: Ovviamente il problema più importante, non posso modificare un controllo a meno che non sia in esecuzione sullo stesso thread che lo ha creato. Come sai, Invoke, BeginInvoke, ecc. Non sono disponibili fino a quando non viene creato […]

La parola chiave volatile C ++ introduce una fence di memoria?

Capisco che volatile informa il compilatore che il valore può essere cambiato, ma per realizzare questa funzionalità, il compilatore deve introdurre una fence di memoria per farlo funzionare? Dalla mia comprensione, la sequenza di operazioni su oggetti volatili non può essere riordinata e deve essere preservata. Ciò sembra implicare che alcune barriere di memoria sono […]

Librerie cache thread-safe per .NET

Sfondo: Gestisco diverse app Winform e librerie di classi che potrebbero o già trarranno vantaggio dalla memorizzazione nella cache. Sono anche a conoscenza del Caching Application Block e dello spazio dei nomi System.Web.Caching (che, da quello che ho raccolto, è perfettamente OK da usare al di fuori di ASP.NET). Ho scoperto che, sebbene entrambe le […]

Aumenta gli eventi in .NET sul thread principale dell’interfaccia utente

Sto sviluppando una libreria di classi in .NET che altri sviluppatori consumeranno alla fine. Questa libreria utilizza pochi thread di lavoro e tali thread triggersno eventi di stato che causeranno l’aggiornamento di alcuni controlli dell’interfaccia utente nell’applicazione WinForms / WPF. Normalmente, per ogni aggiornamento, è necessario verificare la proprietà .InvokeRequired su WinForms o la proprietà […]

Posso forzare la coerenza della cache su una CPU x86 multicore?

L’altra settimana ho scritto una piccola class thread e una pipe message unidirezionale per consentire la comunicazione tra thread (due pipe per thread, ovviamente, per comunicazioni bidirezionali). Tutto ha funzionato bene sul mio Athlon 64 X2, ma mi chiedevo se avrei avuto problemi se entrambi i thread guardavano la stessa variabile e il valore della […]

Rilevazione deadlock programmatico in java

Come posso rilevare a livello di codice che si è verificato un deadlock in un programma Java?

Sincronizzazione dell’accesso a SimpleDateFormat

Javadoc per SimpleDateFormat afferma che SimpleDateFormat non è sincronizzato. “I formati di data non sono sincronizzati, si consiglia di creare istanze di formato separate per ogni thread, se più thread accedono a un formato contemporaneamente, deve essere sincronizzato esternamente.” Ma qual è l’approccio migliore all’utilizzo di un’istanza di SimpleDateFormat in un ambiente con più thread. […]

c # – Utilizzo di parole chiave volatili vs blocco

Ho usato volatile dove non sono sicuro che sia necessario. Ero abbastanza sicuro che un blocco sarebbe eccessivo nella mia situazione. Leggere questo thread (commento di Eric Lippert) mi rende ansioso del mio utilizzo di volatile: quando dovrebbe essere usata la parola chiave volatile in c #? Ho usato volatile perché la mia variabile è […]