статические классы совместно используются различными потоками в C # - PullRequest
10 голосов
/ 22 марта 2011

Мне нужно разделить значение между потоками, не превышая его границы.Статическая переменная делает это?

Ответы [ 5 ]

12 голосов
/ 22 марта 2011

Статические переменные совместно используются несколькими потоками внутри домена приложения.Все потоки будут видеть и воздействовать на один и тот же экземпляр статической переменной.Таким образом, если вы используете static, вы, вероятно, захотите использовать некоторую форму синхронизации для защиты доступа к этой переменной.

Если вы хотите иметь локальную переменную потока, то ThreadLocal<T> класс делает это легко.Он предоставляет средства для генерации и использования данных, уникальных для каждого потока.

11 голосов
/ 22 марта 2011

Вы хотите сказать, что хотите, чтобы переменная была локальной для потока?

Вы можете использовать атрибут [ThreadStatic] или класс ThreadLocal<T> из .NET 4.

Лично я бы предпочел ThreadLocal<T>, если вы используете .NET 4 - но все же лучше было бы избегать такого рода контекста, если вы можете. Можете ли вы инкапсулировать информацию в экземпляр , который используется, например, для запуска потока?

3 голосов
/ 22 марта 2011

Вы украшаете его с помощью ThreadStaticAttribute, чтобы статическая переменная использовалась совместно только с тем потоком, в котором она инициализирована.

Статические переменные по умолчанию распространяются на все потоки в домене приложений.

2 голосов
/ 22 марта 2011

Да, примените ThreadStaticAttribute

0 голосов
/ 22 марта 2011

Да. Вам нужно следить за синхронизацией.

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