Articles of multithreading

Volatile vs. Interbloccato contro blocco

Supponiamo che una class abbia un campo public int counter cui si accede da più thread. Questo int è solo incrementato o decrementato. Per incrementare questo campo, quale approccio dovrebbe essere utilizzato e perché? lock(this.locker) this.counter++; , Interlocked.Increment(ref this.counter); , Cambia il modificatore di accesso del counter a public volatile . Ora che ho scoperto […]

Differenza tra volatile e sincronizzato in Java

Mi chiedo quale sia la differenza tra dichiarare una variabile come volatile e accedere sempre alla variabile in un blocco synchronized(this) in Java? Secondo questo articolo http://www.javamex.com/tutorials/synchronization_volatile.shtml c’è molto da dire e ci sono molte differenze ma anche alcune somiglianze. Sono particolarmente interessato a questa informazione: … l’accesso a una variabile volatile non ha mai […]

C # Eventi e sicurezza del filo

AGGIORNARE A partire da C # 6, la risposta a questa domanda è: SomeEvent?.Invoke(this, e); Spesso ascolto / leggo il seguente consiglio: Crea sempre una copia di un evento prima di controllarlo e annullarlo. Questo eliminerà un potenziale problema con il threading in cui l’evento diventa null nel punto giusto tra il punto in cui […]

È sicuro utilizzare un’istanza java.sql.Connection statica in un sistema con multithreading?

Sto eseguendo un’applicazione web su Tomcat. Ho una class che gestisce tutte le query DB. Questa class contiene l’object Connection e i metodi che restituiscono i risultati della query. Questo è l’object di connessione: private static Connection conn = null; Ha solo un’istanza (singleton). Inoltre, ho metodi che eseguono query, come la ricerca di un […]

C’è un vantaggio nell’usare un metodo sincronizzato invece di un blocco sincronizzato?

Qualcuno può dirmi il vantaggio del metodo sincronizzato sul blocco sincronizzato con un esempio?

Qual è la differenza tra attività e thread?

In C # 4.0, abbiamo Task nello spazio dei nomi System.Threading.Tasks . Qual è la vera differenza tra Thread e Task . Ho fatto un programma di esempio (aiuto preso da MSDN) per il mio bene di imparare con Parallel.Invoke Parallel.For Parallel.ForEach ma ho molti dubbi in quanto l’idea non è così chiara. Ho inizialmente […]

Come eseguire un functor o un lambda in un dato thread in stile Qt, GCD?

In ObjC con GCD, c’è un modo di eseguire un lambda in uno qualsiasi dei thread che girano un loop di eventi. Per esempio: dispatch_sync(dispatch_get_main_queue(), ^{ /* do sth */ }); o: dispatch_async(dispatch_get_main_queue(), ^{ /* do sth */ }); Esegue qualcosa (equivalente a []{ /* do sth */ } in C ++) nella coda del […]

Come dovrei eseguire il test del codice thread?

Finora ho evitato l’incubo che sta testando il codice multi-thread poiché sembra troppo un campo minato. Vorrei chiedere come sono andate le persone a testare il codice che si basa su thread per l’esecuzione di successo, o semplicemente su come le persone hanno provato a testare quei tipi di problemi che si manifestano solo quando […]

Cosa significa “sincronizzato”?

Ho alcune domande riguardanti l’utilizzo e il significato della parola chiave synchronized . Qual è il significato della parola chiave synchronized ? Quando devono essere synchronized metodi? Cosa significa programmaticamente e logicamente?

Potresti spiegare STA e MTA?

Puoi spiegare STA e MTA con parole tue? Inoltre, quali sono i thread degli appartamenti e riguardano solo COM? Se è così, perché?