Нет смысла иметь блокировки в приложении, если есть только один поток, и да, это снижение производительности, хотя для того, чтобы это попадание превратилось во что-то существенное, требуется немало вызовов.
имаю основную функцию блокировки ключевых слов от MSDN
Заявление блокировки (C # Reference)
Ключевое слово lock помечает блок операторов как критический раздел, получая блокировку взаимного исключения для данного объекта, выполняя оператор, а затем снимая блокировку.
Когда следует использовать замок?
Например, это имеет смысл с многопоточными приложениями, потому что это защищает данные. Но нужно ли это, когда приложение не раскручивает какие-либо другие потоки?
Есть ли проблемы с производительностью при использовании блокировки?
Я только что унаследовал приложение, которое везде использует блокировку, и оно является однопоточным, и я хочу знать, стоит ли их оставлять, нужны ли они вообще?
Пожалуйста, обратите внимание, что это больше вопрос общего знания, скорость применения хорошая, я хочу знать, является ли это хорошим шаблоном проектирования, которому нужно следовать в будущем, или его следует избегать, если это абсолютно не нужно.