Windows API-具有LONG_MAX的CreateSemaphore [关闭]

问题描述 投票:-2回答:1

我的问题是,在对CreateSemaphore(nullptr,0,LONG_MAX,nullptr)的调用中如何解释LONG_MAX(for lMaximumCount)的输入。

我知道使用lMaximumCount是为了允许最大数量的线程尝试同时访问资源,但是我看到LONG_MAX的使用是我们的代码库,发现它正在充当二进制信号量,并且需要帮助来理解该值。

c++ windows winapi msdn
1个回答
0
投票

由于API调用中的lInitCount参数已初始化为0,因此信号状态没有信号开始。任何试图获取信号量的消费者都将被阻止,直到生产者添加并释放项目为止。我这边有点蠢!

我认为这是二进制的,因为只添加了1个计数,使信号量单次使用,并且在消耗了1个项目之后–消费者线程在调用waitforsingleobject时被阻塞。

© www.soinside.com 2019 - 2024. All rights reserved.