Есть много статей и обсуждений, объясняющих, почему хорошо создавать потокобезопасные классы. Говорят, что если доступ к нескольким потокам, например, поле в то же время, могут быть только некоторые плохие последствия. Итак, в чем смысл сохранения non потокобезопасного кода? Я сосредоточен в основном на .NET, но я считаю, что основные причины не зависят от языка.
например. Статические поля .NET не являются потокобезопасными. Каков был бы результат, если бы они были потокобезопасными по умолчанию? (без необходимости выполнять "ручную" блокировку). Каковы преимущества использования (по сути, невыполнения обязательств) безопасности, не связанной с потоком?
Одна вещь, которая приходит мне на ум - это производительность (скорее всего, это предположение). Это довольно интуитивно, что, когда функция или поле не нуждается в потокобезопасности, этого не должно быть. Однако вопрос: зачем? Является ли безопасность потоков просто дополнительным количеством кода, который вам всегда нужно реализовать? В каких сценариях я могу быть на 100% уверенным, что, например, поле не будет использоваться сразу двумя потоками?