using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static SemaphoreSlim semaphore = new SemaphoreSlim(3); // 初始允许3个并发 100个并发 3个等待一组
static void Main(string[] args)
{
// 模拟100个任务
var tasks = new List<Task>();
for (int i = 0; i < 100; i++)
{
tasks.Add(Task.Run(() => ProcessTask(taskId)));
}
await Task.WhenAll(tasks); // 异步等待所有任务完成
Console.WriteLine("所有任务已完成");
}
static async Task ProcessTask(int id)
{
await semaphore.WaitAsync(); // 等待信号量
try
{
Console.WriteLine($"任务 {id} 开始执行");
await Task.Delay(2000); // 模拟耗时操作
Console.WriteLine($"任务 {id} 完成");
}
finally
{
semaphore.Release(); // 释放信号量,允许新任务开始
}
}
}
.net 4.5 线程使用 控制线程多少 并发
最新推荐文章于 2026-01-05 22:35:49 发布
8249

被折叠的 条评论
为什么被折叠?



