用有限的计数在多个线程上运行一个函数
本文关键字:运行 函数 一个 线程 | 更新日期: 2023-09-27 18:05:35
假设我有一个列表,其中包含我想要下载的文件列表和一个函数,该函数获取文件URL名称并下载它。我想下载最多4个并行下载。我知道我可以使用一个完美的解决方案:
Parallel.ForEach
(
Result,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
file => DownloadSingleFile(file)
);
但是如果我们不想用这种方法,你有什么建议吗?你的想法中最好的是什么?
谢谢。
像这样的老式Thread
怎么样:
for(int i = 0; i < numThreads; i++)
{
Thread t = new Thread(()=>
{
try
{
while(working)
{
file = DownloadSingleFile(blockingFileQueue.Dequeue());
}
}
catch(InterruptException)
{
// eat the exception and exit the thread
}
});
t.IsBackground = true;
t.Start();
}
我们可以启动4个线程或者使用ThreadPool来添加4个工作项