gpt4 book ai didi

c# - 信号量 WaitOne 运行不正常

转载 作者:行者123 更新时间:2023-11-30 19:30:04 26 4
gpt4 key购买 nike

我有一个信号量,它应该限制为 3,但是,它只是想调用多少就调用多少。我假设这是因为我使用 (1000)。但是,当我只尝试 () 时,它永远不会通过 WaitOne,我不确定该怎么做。

private static Semaphore _pool;
_pool = new Semaphore(0, 3);
var options = new ParallelOptions();
options.MaxDegreeOfParallelism = 1;
Parallel.ForEach(urlTable.AsEnumerable(),options, drow =>
{
using (var WCC = new MasterCrawlerClass())
{
ActiveThreads++;
_pool.WaitOne(1000);
Console.WriteLine("Active Thread #: " + ActiveThreads);
WCC.MasterCrawlBegin(drow);
Console.WriteLine("Done Crawling a datarow");
ActiveThreads--;
_pool.Release();

}
});

最佳答案

你误解了信号量。它应该是 _pool = new Semaphore(3, 3); 这样做还将消除将超时参数传递给 WaitOne() 的需要。

第一个参数是在阻塞之前可能被授予的初始请求数,因此传递 0 意味着对 WaitOne() 的任何后续调用将立即阻塞。

关于c# - 信号量 WaitOne 运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115856/

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