用有限的线程并发执行任务
问题:
假设你有一组必须按顺序执行的任务,最多只能运行 X 个任务 时间。传统上,ThreadPool.QueueUserWorkItem() 用于此类任务,但现在被认为是次优方法。
使用任务的解决方案:
要实现此并发限制,请使用对于任务,我们可以使用 SemaphoreSlim 对象来管理可用线程的数量。下面是演示该方法的代码片段:
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task implementation }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
代码的工作原理如下:
以上是如何使用C#以有限数量的线程并发执行多个任务?的详细内容。更多信息请关注PHP中文网其他相关文章!