Для чего нужна небезопасность потоков?

Существует множество статей и обсуждений, объясняющих, почему хорошо создавать потокобезопасные классы. Говорят, что если несколько потоков обращаются, например, к полю одновременно, могут быть только некоторые плохие последствия. Итак, какой смысл сохранять не потокобезопасный код? Я сосредотачиваюсь в основном на .NET, но считаю, что основные причины не зависят от языка.

Например, статические поля .NET не являются потокобезопасными. Каков был бы результат , если бы они были поточно-ориентированными по умолчанию? (без необходимости выполнять «ручную» блокировку). Каковы преимущества использования (фактически по умолчанию) небезопасности потоков?

Одна вещь, которая приходит мне на ум, - это производительность (хотя, скорее, предположение). Довольно интуитивно понятно, что, когда функция или поле не должны быть потокобезопасными, этого не должно быть. Однако, вопрос: зачем? Является ли потокобезопасность всего лишь дополнительным объемом кода, который всегда необходимо реализовать? В каких сценариях я могу быть на 100% уверен, что, например, поле не будет использоваться двумя потоками одновременно?

15
задан pbalaga 7 January 2011 в 19:05
поделиться