podczas pracy z debuggerem i wykonywaniu kodu instrukcja po instrukcji, może zakłócić przewidywany postęp, co czyni śledzenie trudnym.

Realizacje Wszystkie mikroprocesory DEC Alpha, PowerPC, MIPS i ARM dostarczają instrukcje LL/SC: ldl_l/stl_c i ldq_l/stq_c (Alpha), lwarx/stwcx (PowerPC), ll/sc (MIPS), i ldrex/strex (ARM wersja 6 i wyższe).

Większość platform dostarcza wiele zestawów instrukcji dla różnych rozmiarów danych, np. ldarx/stdcx dla danych podwójnej szerokości na PowerPC.

Niektóre procesory śledzą zmiany w obrębie całej linii pamięci podręcznej lub innej wielokrotności, z której dokonywany jest odczyt instrukcją load-link. W takim przypadku aktualizacja dowolnego fragmentu pamięci (czy to instrukcją store-conditional, czy tylko zwykłym zapisem) jest wystarczającym powodem aby następująca instrukcja store-conditional się nie powiodła.

Wszystkie powyższe platformy dostarczają słabe LL/SC.

Realizacja w ARM definiuje bloki zależne od platformy, w zakresach od 8 bajtów do 2048 bajtów, a dostęp LL/SC w dowolnym zadanym bloku się nie powiedzie jeśli między LL a SC wystąpi zwyczajny dostęp do pamięci w obrębie tego bloku. Ta implementacja jest najsilniejsza i najbardziej praktyczna.

Zobacz też synchronizacja nieblokująca

Bibliografia

Kategoria:Programowanie równoległe