Являются статическими классами, разделяемыми между различными потоками в С#

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 5

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