Семафоры в неуправляемом коде - PullRequest
3 голосов
/ 20 апреля 2010

Я использовал класс Семафор для создания семафоров. Однако в примерах используется управляемый код (require / clr), и мне нужно использовать неуправляемый код, поскольку кажется, что FreeType не нравится работать с управляемым кодом.

Как создать два простых потока, которые используют семафор в неуправляемом коде?

Ответы [ 3 ]

3 голосов
/ 20 апреля 2010

Использовать собственные объекты Windows семафор .

2 голосов
/ 20 апреля 2010

Вы можете попробовать использовать Boost.interprocess. Это обеспечивает семафоры. Смотрите здесь .

1 голос
/ 20 апреля 2010

Вы хотите CreateSemaphore , который реализован в kernel32. Общий шаблон заключается в создании имени или безымянного объекта семафора для использования из обоих потоков. Вы можете использовать OpenSemaphore , чтобы получить дескриптор существующего именованного семафора. Установите начальное и максимальное значения для вашего семафора соответствующим образом, затем используйте одну из Функции ожидания , чтобы установить логическую блокировку на вашем общем ресурсе, уменьшив счет на вашем семафоре. Когда ваш поток завершит работу с ресурсом, вызовите ReleaseSemaphore , чтобы увеличить число доступных блокировок.

...