在VS2010解决方案中查找阻塞调用

时间:2011-07-13 15:39:27

标签: c# asynchronous blocking

我的任务是从C#应用程序中删除阻止调用。事实证明,这是它将要运行的环境的要求。我理解阻塞调用的概念,但是,我不知道从哪里开始寻找现有的阻塞调用。

所以有几个问题:

  1. 对于任何给定的功能,如何判断它是否阻塞?除了查阅文档之外还有什么方法吗?
  2. 有没有办法在项目或解决方案中搜索阻止?例如。一些插件可以告诉我吗?

1 个答案:

答案 0 :(得分:1)

我找不到阻止呼叫的自动方式。大多数阻塞代码用于线程或进程同步,例如lock,Monitor.Enter,Mutex和Semaphore / SemaphoreSlim等,CountdownEvent和Barrier类使用。还有SpinLock和ReaderWriterLock / ReaderWriterLockSlim锁定。

有几个阻塞的线程调用。 Thread.Sleep在技术上可以被认为是一个阻塞调用,虽然它持续有限的时间。 Thread.Join等待其他线程完成,因此阻塞。

For和While循环可以被视为阻塞,因为它们将一直运行直到它们完成,但是如果它们正在等待另一个线程中更新的特定变量,它们通常会使用上面的一个调用(尤其是锁定)。

请注意,删除其中任何一项都可能会对线程安全产生严重的负面影响。