我一直在使用Semaphore class来创建信号量。但是,这些示例使用托管代码(需要/ clr),我需要使用非托管代码,因为似乎FreeType不喜欢使用托管代码。
如何在非托管代码中创建两个使用信号量的简单线程?
答案 0 :(得分:3)
使用原生Windows semaphore objects。
答案 1 :(得分:2)
您可以尝试使用Boost.interprocess。它提供信号量。请参阅here。
答案 2 :(得分:1)
您希望在kernel32中实现CreateSemaphore。一般模式是创建要在两个线程中使用的名称或未命名的信号量对象。您可以使用OpenSemaphore来获取现有命名信号量的句柄。适当地设置信号量的初始计数和最大计数,然后使用Wait Functions之一通过递减信号量上的计数来对共享资源进行逻辑锁定。当您的线程完成资源后,请调用ReleaseSemaphore以增加可用的锁定计数。