2014-09-15 10 views
6

L'articolo "Atomic*.lazySet is a performance win for single writers" indica come lazySet è una scrittura volatile debole (nel senso che funge da archivio di negozio e non da recinto di magazzino). Ma non capisco come l'utilizzo delle scritture semi-volatili migliori le prestazioni simultanee delle code. Quanto esattamente offre latenza extra bassa come claimed by Menta-queue?Atomic Integer lazySet guadagni in termini di prestazioni

Ho già letto sull'implementazione ed è relativo alla domanda di overflow dello stack: "How is lazySet in Java's Atomic* classes implemented" e "Atomic Integer's lazySet vs set".

risposta

1

Il problema con una scrittura volatile su x86 è che emette una barriera di memoria piena che provoca uno stallo finché lo store buffer non viene scaricato. Nel frattempo lazySet su x86 è un semplice negozio. Non richiede che tutti i negozi precedenti in attesa nel buffer del negozio vengano svuotati, consentendo in tal modo che il thread di scrittura proceda alla massima velocità.

Questo è descritto un po 'in Martin Thompson's article.

+0

hey apangin, grazie per l'articolo e la spiegazione! Ho dovuto scavare di nuovo nella mia conoscenza dell'architettura del computer per collegare tutti i punti qui, ma la tua spiegazione e l'articolo di Martin Thompson erano fantastici. spero che tu abbia una buona settimana in anticipo! –

Problemi correlati