Articles of concorrenza

Come gestire gli aggiornamenti simultanei nei database?

Qual è il modo comune per gestire gli aggiornamenti simultanei in un database SQL? Si consideri un semplice schema SQL (vincoli e valori di default non mostrati ..) come create table credits ( int id, int creds, int user_id ); L’intento è quello di memorizzare alcuni tipi di crediti per un utente, ad esempio qualcosa […]

Quando dovrei usare un CompletionService su un ExecutorService?

Ho appena trovato CompletionService in questo post del blog . Tuttavia, questo non mostra davvero i vantaggi di CompletionService su un ExecutorService standard. Lo stesso codice può essere scritto con entrambi. Quindi, quando è utile un CompletionService? Puoi dare un esempio di codice corto per renderlo cristallino? Ad esempio, questo esempio di codice mostra solo […]

Imansible creare un pool di thread memorizzato nella cache con un limite di dimensioni?

Sembra imansible creare un pool di thread memorizzato nella cache con un limite al numero di thread che può creare. Ecco come Executors.newCachedThreadPool statico è implementato nella libreria standard di Java: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue()); } Quindi, usando quel modello per continuare a creare un pool […]

A quale livello MongoDB blocca le scritture? (o: cosa significa “per connessione”

Nella documentazione di mongodb, dice: A partire dalla versione 2.2, MongoDB implementa i blocchi su base per-database per la maggior parte delle operazioni di lettura e scrittura. Alcune operazioni globali, in genere operazioni di breve durata che coinvolgono più database, richiedono comunque un blocco globale di “istanza”. Prima di 2.2, esiste un solo blocco “globale” […]

Concorrenza MS Access (MDB)

Per un piccolo progetto ho bisogno di utilizzare un semplice database con requisiti molto chiari: poche tabelle, non più di poche migliaia di record in totale, 2 o 3 utenti. Sto lavorando in ambiente .NET. Dato che un server di database (anche quelle Express Edition) sembra un enorme overkill in questo caso, un database MDB […]

Come implemento la priorità delle attività utilizzando un ExecutorService in Java 5?

Sto implementando un meccanismo di condivisione dei thread in cui mi piacerebbe eseguire compiti con priorità diverse. Mi piacerebbe avere un buon meccanismo per cui posso inviare un compito ad alta priorità al servizio e averlo programmato prima di altre attività. La priorità dell’attività è una proprietà intrinseca del compito stesso (indipendentemente dal fatto che […]

Cos’è un deadlock?

Quando si scrivono applicazioni multi-thread, uno dei problemi più comuni riscontrati è deadlock. Le mie domande alla comunità sono: Cos’è un deadlock? Come li riconosci? Li gestisci? E infine, come impedisci che si verifichino?

Vuoi spiegare l’ordine di blocco?

Ho imparato che dovrei sbloccare l’ordine inverso per bloccare l’ordine. Per esempio. A.lock(); B.lock(); B.unlock(); A.unlock(); Ma cosa succede se mi piace così: A.lock(); B.lock(); A.unlock(); B.unlock(); Provo a creare uno scenario di deadlock, ma se blocco sempre A prima di B, non so come potrebbe verificarsi un deadlock. Mi aiuteresti?

.NET Lettura / scrittura stream asincroni

Ho cercato di risolvere questo esercizio di esame “Concurrent Programming” (in C #): Sapendo che la class Stream contiene i metodi int Read(byte[] buffer, int offset, int size) e void Write(byte[] buffer, int offset, int size) , implementa in C # il metodo NetToFile che copia tutti i dati ricevuti dalla NetworkStream net istanza all’istanza […]

Diversi tipi di set thread-safe in Java

Sembra che ci siano un sacco di diverse implementazioni e modi per generare set thread-safe in Java. Alcuni esempi includono 1) CopyOnWriteArraySet 2) Collections.synchronizedSet (Set set) 3) ConcurrentSkipListSet 4) Collections.newSetFromMap (new ConcurrentHashMap ()) 5) Altri set generati in modo simile a (4) Questi esempi provengono da Pattern Concurrency: Concurrent Set implementations in Java 6 Qualcuno […]