Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
s -> ~Semaphore(); // destroying semaphoredelete s;Код не изучал, но там нет placement new? да, там plamenet new нет.
3. Непосредственно задача
Итого, наше задание заключается в том, чтобы написать свои аналоги на штатные функции...
А разве с включённой оптимизацией ваш последний цикл не должен развернуться в while(true)? Вы бы хотяб atomic int взяли.
Если честно, не понял посыла статьи. Вы написали что-то похожее на C++ обвёртку поверх WinAPI? Вполне можно было реализовать это на чистом C++ без платформозависимого кода. Не говоря уже о том, что в WinAPI есть готовые семафоры.
Как можно писать вот так?
while (alive_threads != 0) {}Хоть бы SwitchToThread() поставил… А лучше — WaitForMultipleObjects (напомню, что хендл потока тоже можно передавать туда!)
В силу простоты самой задачи, особо усложнять статью не будем, но кому-то может пригодиться :)
Семафор на событиях C++