.Net: Статические классы и многопоточность? - PullRequest
4 голосов
/ 17 июля 2010

Мне сказали, что в многопоточных программах у нас могут возникнуть проблемы со статическими классами.

Не могли бы вы объяснить это подробнее?

Ответы [ 2 ]

3 голосов
/ 17 июля 2010

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

0 голосов
/ 17 июля 2010

С многопоточными программами вы можете иметь некоторые проблемы с чем угодно, не только со статическими классами.Когда речь идет о многопоточности, основной проблемой обычно является конфликт данных ... другими словами: обеспечение правильной работы при чтении или записи в общий ресурс.У статических классов есть некоторые проблемы, но у них также есть некоторые потенциальные преимущества:

Задача

  • По умолчанию некоторые данные предоставляются непосредственно как переменная-член или косвенно через метод доступа / мутаторпоэтому защита ресурса более сложна.
  • Любой, кто использует статический класс, может вызвать проблемы с многопоточностью, если он использует правильную синхронизацию.

Преимущество

Aпотенциальная выгода состоит в том, что если статические данные постоянные , тогда не будет необходимости в синхронизации, поскольку данные могут быть прочитаны, а не записаны.Популярным примером является класс Singleton, который использует статический экземпляр, и экземпляр инициализируется только один раз, поэтому нет необходимости синхронизировать экземпляр Singleton.Тем не менее может потребоваться синхронизация данных, содержащихся в

Singleton

экземпляр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...