Просматривая некоторый код базы данных в поисках ошибки, не связанной с этим вопросом, я заметил, что в некоторых местах List
был используется ненадлежащим образом. В частности:
в качестве читателей, но использовали индексы в списке
вместо счетчиков
.
был единственный писатель.
в одно и то же время, но из-за структуры кода доступ к последнему элементу был невозможен. пока не вернется метод, выполнивший Add ()
.
. Согласно документации C # , это не должно быть потокобезопасным.
Тем не менее, он никогда не подводил. Мне интересно, из-за конкретной реализации List
(я предполагаю, что внутренне это массив , который повторно выделяет , когда заканчивается место), это сценарий надстройки n-reader с 1-писателем и 0-перечислителем случайно потокобезопасный, или есть какой-то маловероятный сценарий, когда это может взорваться в текущей реализации .NET4 ?
править: Важная деталь, которую я упустил, читая некоторые ответы. Читатели рассматривают список List
и его содержимое как доступный только для чтения.