Семафор std::counting_semaphore в C++
Доступные слоты считает std::counting_semaphore.
Заголовок #include <semaphore>
нужен в C++20.
Главный освободит слот, рабочий заберет его и выведет подтверждение:
#include <iostream>
#include <semaphore>
#include <thread>
int main() {
std::counting_semaphore<1> room{0};
std::thread worker([&]() {
room.acquire();
std::cout << "in\n";
room.release();
});
room.release();
worker.join();
return 0;
}
Создайте std::counting_semaphore<1> с нулем слотов. Главный делает release, поток acquire и печатает "slot".