Мне было интересно, что означает для многопоточной системы использование классов stati c следующими способами:
- Без использования службы:
Несколько экземпляров класса A используют один и тот же класс c класса B для некоторых случайных вычислений (например, System.Math) - Использование служб WCF:
a. Наличие 1 отдельной службы WCF, выполняющей то, что описано в 1.
b. Имея несколько служб WCF, каждая из которых имеет 1 экземпляр класса A, используя один и тот же класс c класса B для некоторых случайных вычислений
c. Имея несколько служб WCF, каждая из которых имеет более 1 экземпляра класса A, все используют один и тот же класс * stati c для некоторых случайных вычислений
Из того, что я понимаю, используя классы stati c согласно 2.б. является единственной верной опцией для многопоточных систем, поскольку каждая служба WCF создает свою собственную копию / экземпляр класса stati c. Все остальные опции будут иметь тот же класс stati c и поэтому не допускают многопоточность.
Это правильно?
Что это значит для других вариантов? Есть ли способ сделать классы stati c инстанцируемыми? Думая о System.Math, я не могу просто go и редактировать исходный код.
Или это обычная практика - просто справиться с этим, добавив блокировку, где используются эти классы stati c?
Может быть, стоит использовать сингетон, а не stati c, когда это возможно?