Я считаю себя осведомленным о понятиях потоковой передачи и почему определенный код является или не является "потокобезопасным", но как человек, который в первую очередь работает с ASP.NET, потоки и безопасность потоков - это то, о чем я редко думаю. Тем не менее, я, кажется, сталкиваюсь с многочисленными комментариями и ответами (не обязательно для ASP.NET) на Qaru в ответ на " предупреждение - это не потокобезопасно!", и это, как правило, делает меня второе предположение, написал ли Ive аналогичный код, который действительно может вызвать проблему в моих приложениях. [шок, ужас и т.д.] Поэтому я вынужден спросить:
Должны ли разработчики ASP.NET действительно заботиться о безопасности потоков?
My Take: Хотя веб-приложение по своей сути многопоточно, каждый конкретный запрос входит в один поток, и все нестатические типы, которые вы создаете, изменяете или уничтожаете, являются исключительными для этого единственного потока/запроса. Если запрос создает экземпляр объекта DAL, который создает экземпляр бизнес-объекта, и Я хочу ленить-инициализировать коллекцию в этом объекте, не имеет значения, не потокобезопасным, потому что он никогда не будет тронут другим потоком....Правильно? (Предположим, что Im не запускает новый поток, чтобы начать длительный асинхронный процесс во время запроса. Мне хорошо известно, что все меняется.)
Конечно, статические классы, методы и переменные просто противоположны. Они разделяются по каждому запросу, и разработчик должен быть очень осторожным, чтобы не иметь "небезопасный" код, который при выполнении одним пользователем может иметь непреднамеренный эффект для всех остальных.
Но об этом, и, следовательно, безопасность потоков в ASP.NET в основном сводится к следующему: будьте осторожны, как вы разрабатываете и используете статику. Кроме этого, вам не нужно об этом беспокоиться.
Я не прав по поводу этого? Вы не согласны? Просветите меня!