Многопоточность по статическим методам / классам - PullRequest
1 голос
/ 02 сентября 2010

Действительно ли нам нужна блокировка для статических методов (статический класс), когда методы интенсивно используются потоками? Требуется ли это, когда статические методы используют такие ресурсы, как SQL-запросы / StoredProcedures?

Спасибо Панкадж

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

Это полностью зависит от того, что делают статические методы. Если они используют общие ресурсы (например, то же соединение SQL или изменяют общую коллекцию), тогда да, вам абсолютно необходима блокировка или что-то подобное.

Если, однако, каждый вызов метода фактически независим, не затрагивая какое-либо разделяемое изменяемое состояние, блокировка не требуется.

0 голосов
/ 02 сентября 2010

Если у вас есть общая память между потоками (статическая или нет), и вы полагаетесь на это для получения информации о состоянии, у вас есть вероятность возникновения состояний гонки, что приводит к трудностям при отладке и ошибочному выполнению.

...