A może zawsze powinieneś stworzyć inny obiekt blokady?Czy możesz zablokować ogólny słownik?
6
A
Odpowiedz
14
Tak, wrzucił je do IDictionary i blokady na .SyncRoot
:
Generic.Dictionary<int, int> dic = new Generic.Dictionary<int, int>();
lock (((IDictionary)dic).SyncRoot)
{
// code
}
Dzięki tej source za info.
Oczywiście słownik wątkowy byłby również przyjemny, jak sugerowali inni.
1
Możesz zablokować dowolny obiekt, który chcesz (z wyjątkiem typów wartości). Zaleca się jednak, aby zablokować obiekt .SyncRoot.
Powiązane problemy
- 1. Czy możesz przekazać słownik podczas zamiany ciągów znaków w Pythonie?
- 2. Czy lepiej jest zablokować lub spróbować przechwycić słownik w wątku (.NET)?
- 3. Sprawdź, czy typ jest słownik
- 4. Czy PHP ma uporządkowany słownik?
- 5. jak zablokować wywołanie ajax (chcę to zablokować)
- 6. czy możesz telnetować do ssh?
- 7. Ogólna lista/słownik
- 8. Czy powinienem mutex zablokować pojedynczą zmienną?
- 9. Czy istnieje ogólny sposób synchronizowania metody asynchronicznej?
- 10. Czy istnieje ogólny specyfikator konwersji dla printf?
- 11. Sprawdzanie, czy typ implementuje ogólny interfejs
- 12. Ogólny iterator
- 13. Zapytanie słownik słowników?
- 14. AS3: Sprawdź, czy słownik jest pusty.
- 15. Czy słownik Objective-C jest zamówionym kontenerem?
- 16. Jak sprawdzić, czy słownik zawiera określone klucze?
- 17. Określanie, czy słownik zawiera cały zestaw kluczy
- 18. Czy głęboko zagnieżdżony słownik jest antypodstawą?
- 19. powinienem zablokować "wydarzenie"?
- 20. Słownik dwukierunkowy?
- 21. Zablokować kilka jvm?
- 22. PHPExcel zablokować danej komórki
- 23. Stan na oczekiwać zablokować
- 24. Zagnieżdżony słownik
- 25. Czy możesz polecić lekkie oprogramowanie portletowe java?
- 26. Czy możesz przekazać "typ" jako argument?
- 27. Czy możesz "zignorować" katalog w P4V?
- 28. Czy możesz nagrać wersję git z grubs
- 29. Czy możesz używać AngularJS z Parse.com?
- 30. Czy możesz użyć wyrażenia regularnego w .babelrc?
Ta odpowiedź została zaakceptowana, ale każdy, kto ją przeczyta, powinien również zapoznać się z tym na przykład: http://stackoverflow.com/questions/327654/hashtable-to-dictionary-syncroot. SyncRoot nie jest najlepszym sposobem blokowania kolekcji. – AFract
Zdaję sobie sprawę, że ta odpowiedź jest stara. Chciałem tylko powiedzieć, że link jest już martwy. –
Lepiej nie używać "SyncRoot", był to problem projektowy zespołu .net, zamiast tego użyj Lock (_lockObject). –