У меня есть эта путаница на какое-то время, являются потоками реализации статического метода, методы экземпляров, безусловно, являются потокобезопасными, если мы назначаем отдельный экземпляр для каждого потока, тогда они не лезьте, потом я понял, что безопасность потоков больше о типах тогда методов, которые сами по себе не выделение памяти, поэтому давайте рассмотрим пример:Статические или нестатические методы, безопасность потоков для типов не методов
private static ConcurrentDictionary<int,int> cd;
public static void Method1(int userid)
{
// Modify static object cd based on userid key
}
public void Method2(int userid)
{
// Modify static object cd based on userid key
}
в сущности нет никакой разницы между двумя методами, когда доступ к которым осуществляется несколькими потоками, обеспечивающими разные идентификаторы пользователей во время выполнения. Я тестировал то же самое, но хочу проверить правильность моего понимания.
Когда вы голосуете, объясните причину, что не так с вопросом. У всех нет сомнений. Остановите это молчаливое голосование, по крайней мере, выскажите свое мнение, это довольно случайный и неуважительный –
(а не downvoter) Это не очень пример. Ни один метод не всегда будет потокобезопасным, «статическим» или нет. В комментарии говорится modifiy 'cd', но' cd' является самим ThreadSafe 'ConcurrentDictionary', поэтому все в порядке. – weston
@weston Вот почему я изменяю тип внутри, статический ConcurrentDictionary, вместо этого для метода, отличного от экземпляра, я могу сделать это для словаря до момента, когда я сохраняю его уникальным для потока, но это не может работать для статического метода , поэтому аналогичный код для обоих, изменяя статический тип экземпляров –