对同一对象使用嵌套锁是否是一种性能成本.
说我们有:
public void AddRange(IEnumeratable<Item> items)
{
lock (_syncObject)
{
foreach (Item item in items)
{
InsertItem(item);
}
}
}
public void InsertItem(Item item)
{
lock (_syncObject)
{
//..
}
}
Run Code Online (Sandbox Code Playgroud)
这样做"性能方面"可以吗?
提前致谢.
锁有成本,我建议你实现这样的代码:
public void AddRange(IEnumeratable<Item> items)
{
lock (_syncObject) // Locking only once.
{
foreach (Item item in items)
{
InsertItemImpl(item);
}
}
}
private void InsertItemImpl(Item item)
{
// inserting the item
}
public void InsertItem(Item item)
{
lock (_syncObject)
{
InsertItemImpl(item);
}
}
Run Code Online (Sandbox Code Playgroud)