C# 检查是否请求了信号量

C# 检查是否请求了信号量,c#,multithreading,semaphore,C#,Multithreading,Semaphore,我有一个静态信号量LIM变量: static SemaphoreSlim semaphore = new SemaphoreSlim(1); 我可以等待()并释放()信号量 但是,如果信号量是由一个任务获取的,我如何才能看到它是否是由另一个任务请求的呢?问题:我有类C{public static int x=3;}假设线程Alpha将C减为2,并在将来某个时候将其递增。线程Beta如何知道线程Alpha在过去减少了一个变量,而在将来会增加它?您可以使用.WaitOne(Int32)重载来等待信

我有一个静态信号量LIM变量:

static SemaphoreSlim semaphore = new SemaphoreSlim(1);
我可以等待()并释放()信号量


但是,如果信号量是由一个任务获取的,我如何才能看到它是否是由另一个任务请求的呢?

问题:我有
类C{public static int x=3;}
假设线程Alpha将C减为2,并在将来某个时候将其递增。线程Beta如何知道线程Alpha在过去减少了一个变量,而在将来会增加它?您可以使用
.WaitOne(Int32)
重载来等待信号量指定的时间量(以毫秒为单位)。您为什么在意?如果任务想要进入其关键部分,另一个任务应该离开它的关键部分。为什么?这不是信号灯的目的。它的目的是保证只有一个线程(或更多线程,取决于您如何创建c#信号量)正在输入共享代码和资源,其他线程将等待它完成。线程不知道其他线程希望进入“临界区”——只是为了防止它们进入。