在VS2010解决方案中找到阻塞调用
本文关键字:调用 VS2010 解决方案 | 更新日期: 2023-09-27 18:01:54
我的任务是从c#应用程序中删除阻塞调用。事实证明这是它将运行的环境的要求。我理解阻塞调用的概念,但是,我不确定从哪里开始查找现有的阻塞调用。
有几个问题:
- 对于任何给定的函数,我如何知道它是否阻塞?除了查阅文件之外,还有什么办法吗?
- 是否有任何方法来搜索阻塞在一个项目或解决方案?如。有什么插件可以告诉我吗?
我知道没有自动找到阻塞调用的方法。大多数阻塞代码用于线程或进程同步,如lock、Monitor。输入,互斥和信号量/信号量等待,CountdownEvent和Barrier类的使用。还有SpinLock和ReaderWriterLock/ReaderWriterLockSlim锁阻塞。
有几个线程调用正在阻塞。线程。从技术上讲,睡眠可以被视为阻塞调用,尽管它持续的时间是有限的。线程。Join等待其他线程完成,因此阻塞。
For和While循环可以被认为是阻塞的,因为它们将运行直到它们完成,但通常它们会使用上面的一个调用(特别是锁),如果它们正在等待另一个线程中更新的特定变量。
请记住,删除其中任何一个都可能对线程安全产生严重的负面影响。