gpt4 book ai didi

c# - 信号量动态调整大小 C#

转载 作者:行者123 更新时间:2023-11-30 15:08:25 24 4
gpt4 key购买 nike

我正在尝试使用信号量来控制可以同时运行多少个作业实例。虽然使用 wait 方法这很简单,但我还希望该值在运行时是可配置的,以便我可以增加或减少计数。

我意识到倒计时可能会出现问题,但有没有办法真正做到这一点?这是使用信号量的正确方法吗?

最佳答案

根据 ReleaseSemaphore 的文档,对于 lReleaseCount 参数:

The amount by which the semaphore object's current count is to be increased. The value must be greater than zero. If the specified amount would cause the semaphore's count to exceed the maximum count that was specified when the semaphore was created, the count is not changed and the function returns FALSE.

这个和其他文档表明信号量不是您的限制的正确选择。信号量一旦创建,就会有一个硬最大值,如果不重新创建信号量就无法更改。换句话说,它不是一个可以更改的动态值

在这种情况下,您需要找到另一种管理限制的方法。

可以使用信号量的一种方法是分配一个足够大的信号量来满足所有 future 的需求,然后只获取它的足够“实例”以将可用数量减少到您目前需要的数量。当您想要增加可用实例的数量时,只需释放您在开始时抓取的一些实例即可。

但是,我质疑你为什么要这样做。真正决定在这里可以同时执行多少作业的限制因素是什么?信号量很可能不是对此的正确答案。

关于c# - 信号量动态调整大小 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com