信号量内核对象用来对资源进行计数。与其他内核对象不同的是,它还包含了两个32位值:一个最大资源计数和一个当前资源计数。
最大资源表示信号量可以控制的最大资源数量,当前资源计数表示信号量当前可用的资源的数量。
HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, //安全属性 _In_ LONG lInitialCount, //表示这些资源一开始有多少个可供使用 _In_ LONG lMaximumCount, //能够处理的资源最大数量 _In_opt_ LPCTSTR lpName );当前资源计数大于零:信号量处于触发状态
等于零:未触发状态
可以用OpenSemaphore来得到已经存在的信号量的句柄