Использование stati c объектов в многопоточной системе - PullRequest
0 голосов
/ 13 февраля 2020

Мне было интересно, что означает для многопоточной системы использование классов stati c следующими способами:

  1. Без использования службы:
    Несколько экземпляров класса A используют один и тот же класс c класса B для некоторых случайных вычислений (например, System.Math)
  2. Использование служб 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, когда это возможно?

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что лучший вариант - добавить блокировку, где используются классы c *

...