2010-04-20 5 views
3

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

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

ответ

3

Используйте родные Windows semaphore objects.

+0

Фантастический, именно то, что я искал, но не смог найти. Спасибо. – Dororo

2

Вы можете попробовать и использовать Boost.interprocess. Он предоставляет семафоры. См. here.

1

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

Смежные вопросы