Захват семафора acquire в C++
Метод acquire уменьшает счетчик
std::counting_semaphore и блокируется,
если слотов не осталось.
Поток дождется слота, выполнит действие
и вернет ресурс через release:
#include <iostream>
#include <semaphore>
#include <thread>
int main() {
std::counting_semaphore<2> slots{1};
std::thread worker([&]() {
slots.acquire();
std::cout << "hold\n";
slots.release();
});
worker.join();
return 0;
}
Поток вызывает acquire на std::counting_semaphore<2>, печатает "go" и делает release.