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