多线程的并发控制
Posted getpower
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程的并发控制相关的知识,希望对你有一定的参考价值。
当有多个线程同时访问有限制的资源时会出现并发情况,此时可以使用‘信号量’来控制访问资源的线程数量
static void Main(string[] args)
{
int taskCount = 10;//总线程数
int seatCount = 4;//资源访问最大线程数量
var semaphore = new SemaphoreSlim(seatCount,6);
var tasks = new Task[taskCount];
for (int i = 0; i < taskCount; i++)
{
tasks[i] = Task.Run(() => TaskRun(semaphore));
}
Task.WaitAll(eatings);
Console.WriteLine("All Tasks have finished!");
}
static void TaskRun(SemaphoreSlim semaphore)
{
semaphore.Wait();
try
{
Console.WriteLine("Task {0} is Running!", Task.CurrentId);
Thread.Sleep(1000);
}
finally
{
Console.WriteLine("Task {0} have finished!", Task.CurrentId);
semaphore.Release();
}
}
以上是关于多线程的并发控制的主要内容,如果未能解决你的问题,请参考以下文章