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