Ответ 1
Документы, на которые вы ссылаетесь, были написаны моими коллегами как результат нашей работы над картой ACE С++ и ее оберточными фасадами OS. Как уже упоминалось в моей биографии, "я не делаю Windows", но я все еще активно работаю над ACE, и я просто посмотрел, и, похоже, что реализация переменной условия для Win32 использует CRITICAL_SECTION
(при первоначальном осмотре она выглядит например, просто используя мьютекс, но если вы копаете глубже, вы обнаружите, что есть слой ниже, в котором мьютекс определен как CRITICAL_SECTION
на платформах Windows).
FYI, чтобы гарантировать, что код не был изменен для использования новых API-интерфейсов Vista, база кода, которую я проверила, фактически является ветвью от строки 1.5.
Предполагая, что вам просто нужен C API для переменных условия, а не обертки С++ вокруг него, все это должно содержаться в одном наборе файлов: ace/OS_NS_Thread.{h,inl,cpp}
Лицензия на ACE очень щедрая, а не GPL, поэтому вы может поднять код оттуда в проприетарную базу кода, не опасаясь "загрязнения GPL".
Вы можете получить релизы ACE в http://download.dre.vanderbilt.edu/; проверенная версия - это коммерчески поддерживаемый релиз, полученный из ACE 5.5.2, поддерживаемый OCI и доступны для загрузки на http://www.theaceorb.com/downloads/1.5a/index.html.
В интересах полного раскрытия я был давним пользователем/вкладчиком/сопровождающим в ACE, некоторое время работал над этим исследовательским персоналом и теперь являюсь сотрудником OCI. Я не думаю, что это изменяет полезность/применимость этого кода для вас, и ни один из вышеупомянутых лиц не получает доход от вас, переставляя код из источника.