问题标签 [syncroot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5317 浏览

.net - 为什么要锁定 Collection.SyncRoot 而不是锁定集合?

我试图了解 ICollection 中同步根的意义。为什么不直接锁定收藏?

对比

0 投票
2 回答
2165 浏览

c# - SyncRoot 对象真的是线程安全的吗?

我是 SyncRoot 概念的新手。据我所知,用于锁定的对象应该是私有的。

但是HashTable有一个公共属性 ,SyncRoot它只是私有 SyncRoot 对象的包装器。建议HashTable.SyncRoot在枚举集合时锁定。

看起来我们可能会因为死锁而失败,因为它不再是私有的。它真的是线程安全的吗?

如果我制作自己的私有锁定机制怎么办? private readonly object _syncObject;

哪个更好,为什么?

0 投票
1 回答
3723 浏览

powershell - Powershell 中的 SyncRoot 属性

这个问题与以下博客中的函数 forward_dns 有关:http: //powershellmasters.blogspot.com/2009/04/nslookup-and-powershell.html

因此,假设我在 powershell 中有一段代码,如下所示:

此代码段使用 nslookup DOS 命令进行 DNS 查找。由于它是一个 DOS 命令,Invoke-Expression 返回的对象基本上是一个字符串数组,每一行输出一个字符串。

在示例函数中,为了检索输出的第 4 行,原作者使用以下语法:

我发现这也很好用:

在这种情况下 SyncRoot 的目的是什么?

0 投票
3 回答
22885 浏览

c# - 锁定字典对象的正确方法

在我的代码中,我有一个静态字典对象

这是抛出这个错误

我搜索并发现这是因为多个线程尝试访问字典,但我确实有lock字典

然后我进行了更多搜索,发现锁定字典并不能阻止对它的所有操作,所以我应该像这样使用它lockSyncRoot对象来实现我想要的

但后来我搜索到使用SyncRoot不是一个好习惯

在进一步搜索中,我发现有一个ConcurrentDictionary用于此目的

  1. 那么任何人都可以建议我锁定字典的最佳方法吗
  2. 如果我使用ConcurrentDictionary它,我仍然需要使用lock它还是它会自己处理所有事情。
  3. 如果我必须使用 lock on ConcurrentDictionary,我必须lock直接使用它或再次我必须SyncRoot为它锁定对象

提前致谢!

0 投票
1 回答
1640 浏览

c# - 为什么这个例子中的队列锁是必要的

我有下面显示的示例。我不知道为什么队列SyncRoot也有锁定,而这两种连贯算法都使用同一个对象完全锁定。

据说队列锁是必须的。

锁定队列的原因是什么SyncRoot,即lock(workQueue.SyncRoot )