2014-09-15 11 views
6

Artykuł "Atomic*.lazySet is a performance win for single writers," wyjaśnia, jak lazySet jest słabym lotnym zapisywaniem (w tym sensie, że działa jak sklep-sklep, a nie płot sklepu). Nie rozumiem jednak, w jaki sposób wykorzystanie zapisów półwolnych poprawia wydajność równoczesnej kolejki. Jak dokładnie oferuje on bardzo niskie opóźnienie, tak jak claimed by Menta-queue?Atomic Integer lazySet zyski wydajnościowe

Już czytałem na jego implementacji i to roszczenia na pytanie przepełnienie stosu: "How is lazySet in Java's Atomic* classes implemented" i "Atomic Integer's lazySet vs set."

Odpowiedz

1

Problem z niestabilnym zapisem na x86 polega na tym, że wywołuje on pełną barierę zapamiętywania, która skutkuje stratą do czasu wyczerpania wartości store buffer. Tymczasem lazySet na x86 jest prosty sklep. Nie wymaga to przepłukiwania wszystkich poprzednich sklepów oczekujących w buforze pamięci, co umożliwia pisanie wątku z pełną prędkością.

Zostało to nieco opisane w Martin Thompson's article.

+0

hej apangin, dziękuję za artykuł i wyjaśnienie! Musiałem zagłębić się w wiedzę z zakresu architektury komputera, aby połączyć wszystkie kropki tutaj, ale twoje wyjaśnienia i artykuł Martina Thompsona były świetne. mam nadzieję, że masz dobry tydzień przed nami! –