非托管代码中的信号量

时间:2010-04-20 12:26:30

标签: c++ winapi multithreading semaphore

我一直在使用Semaphore class来创建信号量。但是,这些示例使用托管代码(需要/ clr),我需要使用非托管代码,因为似乎FreeType不喜欢使用托管代码。

如何在非托管代码中创建两个使用信号量的简单线程?

3 个答案:

答案 0 :(得分:3)

使用原生Windows semaphore objects

答案 1 :(得分:2)

您可以尝试使用Boost.interprocess。它提供信号量。请参阅here

答案 2 :(得分:1)

您希望在kernel32中实现CreateSemaphore。一般模式是创建要在两个线程中使用的名称或未命名的信号量对象。您可以使用OpenSemaphore来获取现有命名信号量的句柄。适当地设置信号量的初始计数和最大计数,然后使用Wait Functions之一通过递减信号量上的计数来对共享资源进行逻辑锁定。当您的线程完成资源后,请调用ReleaseSemaphore以增加可用的锁定计数。