Hashtable to Dictionary <> Syncroot.

Хеш-таблицы имеют свойство syncroot, а общие словари - нет. Если у меня есть код, который делает это:

lock (hashtable.Syncroot)
{
....
}

Как мне воспроизвести это, если я удаляю хеш-таблицу и перехожу на общие словари?

11 голосов | спросил leora 29 62008vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2008 19:06:29 +0300 2008, 19:06:29

2 ответа


0

Новое мышление SyncRoot заключается в том, что это было ошибкой в ​​оригинальном дизайне. Если единственное, что нужно заблокировать, - это словарь, который является частным, вы можете заблокировать его или другой объект, который служит объектом синхронизации. Последний способ полезен, когда состояние, которое вы защищаете, - это больше, чем просто словарь.

// used as you would have used SyncRoot before
object _syncLock = new object();
Dictionary<string, int> numberMapper = new Dictionary<string, int>();

// in some method...
lock (_syncLock)
{
    // use the dictionary here.
}
ответил denis phillips 29 62008vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2008 20:30:38 +0300 2008, 20:30:38
0

Если хеш-таблица /словарь не является общедоступной, вы можете просто заблокировать сам объект словаря.

ответил Will Dean 29 62008vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2008 19:17:37 +0300 2008, 19:17:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132