【发布时间】:2015-12-27 15:25:49
【问题描述】:
我有一个方法需要访问一个静态数组并进行一些繁重的计算。
public void DoIt(){
lock(myStaticArray){
// do crazy stuff
}
}
该方法需要一到两秒才能完成,因此获取锁定所需的纳秒数在这里并不重要。
现在假设有 10 个线程到达代码并输入了一个。现在它是否使线程内的运行代码比没有线程等待锁要慢?等待锁定的阻塞线程在等待期间是否会消耗任何 CPU 使用率?
【问题讨论】:
-
可以看
Monitor.Enter的实现看实际代码。它可能会旋转等待几次,然后阻塞所述线程。我认为您的数组计算的开销可以忽略不计。
标签: c# multithreading