這篇來講一下 C++20 針對多執行序/併行(Concurrency)新增的另一個功能:semaphore(信號、C++ Reference)。
他的基本型別是 std::counting_semaphore
,在內部擁有一個計數器來記錄總共可用的數量;這邊或許把他想像成總共有好幾張椅子,然後讓大家都要來坐的概念會比較好理解。
使用時基本上就是透過呼叫 acquire()
來向 counting_semaphore
要求一個位置、這時候它的內部記數器就會減 1、代表有一個位置被用掉了;而在用完之後,則是要透過呼叫 release()
這個函式來釋出位置、這時候內部計數器就會加 1。