Я думаю, он имеет в виду, что простое использование ConcurrentDictionary
вместо Dictionary
не сделает программу поточно-ориентированной.Таким образом, если у вас есть не поточнобезопасная программа, поиск и замена не помогут;аналогично, добавление SynchronizedAttribute
везде не будет работать, как волшебная волшебная пыль.Это особенно верно в отношении коллекций, где итерация всегда является проблемой [1].
С другой стороны, если вы реструктурируете не поточно-ориентированную программу в более поточно-ориентированный дизайн, то вы частоне нужны потокобезопасные структуры данных.Один из популярных подходов заключается в переопределении программы в терминах «действующих лиц», которые отправляют «сообщения» друг другу - кроме единой очереди сообщений типа «производитель / потребитель», каждый участник может оставаться в одиночестве и не должен использовать потокобезопасные данные.внутренние структуры.
[1] Первый выпуск коллекций BCL включал некоторые «поточно-безопасные» коллекции, которые просто были не поточно-безопасными во время итераций.Коллекции Concurrent во время итерации являются потокобезопасными, но итерируются одновременно с изменениями других потоков.Другие библиотеки коллекций допускают «моментальные снимки», которые затем можно повторять, игнорируя изменения из других потоков.