我的任务是从C#应用程序中删除阻止调用。事实证明,这是它将要运行的环境的要求。我理解阻塞调用的概念,但是,我不知道从哪里开始寻找现有的阻塞调用。
所以有几个问题:
答案 0 :(得分:1)
我找不到阻止呼叫的自动方式。大多数阻塞代码用于线程或进程同步,例如lock,Monitor.Enter,Mutex和Semaphore / SemaphoreSlim等,CountdownEvent和Barrier类使用。还有SpinLock和ReaderWriterLock / ReaderWriterLockSlim锁定。
有几个阻塞的线程调用。 Thread.Sleep在技术上可以被认为是一个阻塞调用,虽然它持续有限的时间。 Thread.Join等待其他线程完成,因此阻塞。
For和While循环可以被视为阻塞,因为它们将一直运行直到它们完成,但是如果它们正在等待另一个线程中更新的特定变量,它们通常会使用上面的一个调用(尤其是锁定)。
请注意,删除其中任何一项都可能会对线程安全产生严重的负面影响。