0x4*_*9D1 5 c# multithreading locking
更好的是:
在lock语句中有大的代码区域
或
在大区域中有小锁?
这个样本中的交换是不可更改的.
lock (padLock)
{
foreach (string ex in exchanges)
{
sub.Add(x.ID, new Subscription(ch, queue.QueueName, true));
.........
}
Run Code Online (Sandbox Code Playgroud)
要么
foreach (string ex in exchanges)
{
lock (padLock)
{
sub.Add(x.ID, new Subscription(ch, queue.QueueName, true));
}
.....
Run Code Online (Sandbox Code Playgroud)
锁越宽,从多线程中获得的就越少,反之亦然。因此,锁的使用完全取决于逻辑。仅锁定发生变化且一次只能由一个线程运行的事物和位置
如果您锁定使用集合sub- 使用较小的锁,但如果您并行运行多个同时foreach循环
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |