Запитати це нерозумно. Там є випадки , коли методи , які можуть викликати проблеми безпеки потоків в поєднанні з іншими методами є безпечними , якщо вони є єдиним методом , називається.
Однак це явно не випадок, коли ви розглядаєте код, показаний у рефлекторі:
public void Add(T item)
{
if (this._size == this._items.Length)
{
this.EnsureCapacity(this._size + 1);
}
this._items[this._size++] = item;
this._version++;
}
Навіть якщо EnsureCapacityвін сам по собі був threadsafe (а це, безсумнівно, ні), вищезазначений код явно не буде безпечним, враховуючи можливість одночасних викликів оператору збільшення, що спричиняє помилкові записи.
Або заблокуйте, використовуйте ConcurrentList, або, можливо, використовуйте безблокову чергу, як місце, куди записують декілька потоків, і читання з нього - або безпосередньо, або заповнення списку ним - після того, як вони виконають свою роботу (я припускаю, що декілька одночасних записів з подальшим однопотоковим читанням - це ваш шаблон тут, судячи з вашого запитання, оскільки в іншому випадку я не бачу, як умова, де Addє єдиний викликаний метод, може бути корисною).