Poprawna (?) implementacja semafora binarnego przy użyciu futexów

Znaleziona w bibliotece Intela do multithreadingu: https://github.com/01org/tbb/blob/tbb_2018/src/tbb/semaphore.h#L193. Notabene korzysta z atomicznych instrukcji compare-and-swap i exchange (tam się nazywają fetch_and_store), ale zgaduję że jest poprawna (jest wykorzystywana w kilku komercyjnych produktach).

4 polubienia

Dla ciekawych mogę użyczyć (w postaci wydruku) do wglądu implementację w Promeli dla której SPIN w sposób wyczerpujący dla 4 procesów pokazał, że w sekcji krytycznej jest co najwyżej jeden proces i żaden wątek się nie zatrzymuje w wyniku zagubienia sygnału.

1 polubienie