Articles of concurrency

Pubblicazione di oggetti non thread-safe

Leggendo la concorrenza Java in pratica, sezione 3.5: Viene sollevato un reclamo public Holder holder; public void initialize() { holder = new Holder(42); } Oltre all’ovvio rischio in tutta sicurezza di creare 2 istanze di Holder, il libro afferma che può verificarsi un ansible problema di pubblicazione, oltre a una class Holder come public Holder […]

ConcurrentDictionary Pitfall – Le fabbriche dei delegati da GetOrAdd e AddOrUpdate sono sincronizzate?

La documentazione di ConcurrentDictionary non è uno stato esplicito, quindi suppongo che non ci si possa aspettare che i delegati valueFactory e updateValueFactory abbiano la loro esecuzione sincronizzata (rispettivamente dalle operazioni GetOrAdd () e AddOrUpdate () ). Quindi, penso che non possiamo implementare l’uso di risorse al loro interno che richiedono un controllo concorrente senza […]

Come fare in modo che BackgroundWorker restituisca un object

Devo fare in modo che RunWorkerAsync() restituisca un List . Come posso restituire un object da un lavoratore in background?

scala.concurrent.blocking: cosa fa in realtà?

Ho passato un po ‘di tempo a studiare l’argomento dei contesti di esecuzione Scala, i modelli di thread sottostanti e la concorrenza. Puoi spiegare in che modo scala.concurrent.blocking “aggiusta il comportamento di runtime” e “può migliorare le prestazioni o evitare deadlock” come descritto nello scaladoc ? Nella documentazione , viene presentato come un mezzo per […]

La lettura simultanea del vettore stl è sicura per thread?

Sto lavorando a un’applicazione in cui è previsto un numero enorme di thread per iterare su un insieme di valori stringa e cercare di associare i propri dati con quelli disponibili nell’elenco. Sto cercando il seguente caso d’uso: Il vettore viene inizializzato con pochi elementi di tipo std :: string. (Diciamo che il nome dell’object […]

Entity Framework Thread Safety

Gli oggetti di contesto generati da Entity Framework non sono thread-safe. Cosa succede se utilizzo due contesti di quadro separati, uno per ogni thread (e chiamiamo SaveChanges() su ciascuno) – questo sarà sicuro per i thread? // this method is called from several threads concurrently public void IncrementProperty() { var context = new MyEntities(); context.SomeObject.SomeIntProperty++; […]

X86 CMPXCHG è atomico?

La documentazione di Intel a http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf dice “Questa istruzione può essere utilizzata con un prefisso LOCK per consentire l’esecuzione dell’istruzione atomicamente.” La mia domanda è CMPXCHG può funzionare con l’indirizzo di memoria? Dal documento sembra non esserlo, ma qualcuno può confermare che funziona solo con VALUE effettivi nei registri, non nell’indirizzo di memoria? Se CMPXCHG […]

Quando è preferibile utilizzare il booleano volatile in Java piuttosto che in AtomicBoolean?

Ho esaminato le altre domande volatili contro Atomicxxxx in SO (incluso questo ) e ho letto la descrizione di java.util.current.atomic , e non sono abbastanza soddisfatto delle sfumature. Se sto cercando di decidere tra l’uso di volatile boolean e AtomicBoolean , ci sono delle differenze pratiche oltre alle operazioni di lettura-modifica-scrittura atomiche offerte da AtomicBoolean? […]

Java: ExecutorService che blocca all’invio dopo una determinata dimensione della coda

Sto cercando di codificare una soluzione in cui un singolo thread produce attività di I / O che possono essere eseguite in parallelo. Ogni attività ha importanti dati in memoria. Quindi voglio essere in grado di limitare il numero di attività che sono in sospeso in un momento. Se creo ThreadPoolExecutor in questo modo: ThreadPoolExecutor […]

Qual è lo stato della programmazione multicore in Haskell?

Qual è lo stato della programmazione multicore in Haskell? Quali progetti, strumenti e librerie sono disponibili adesso? Quali rapporti di esperienza ci sono stati?