Некоторое время назад я думал о том, как реализовать различные примитивы синхронизации в терминах друг друга. Например, в pthreads вы получаете мьютексы и условные переменные, и из них можно создавать семафоры.
В Windows API (или, по крайней мере, в более старых версиях Windows API) есть мьютексы и семафоры, но нет условных переменных. Я думаю, что можно создать условные переменные из мьютексов и семафоров, но я не могу придумать, как это сделать.
Кто-нибудь знает хорошую конструкцию для этого?