lock palabra clave en C #

Entiendo la función principal de la palabra clave de bloqueo de MSDN

lock Statement (Referencia de C #)

La palabra clave de bloqueo marca un bloque de declaración como una sección crítica al obtener el bloqueo de exclusión mutua para un objeto determinado, ejecutar una declaración y luego liberar el bloqueo.

¿Cuándo se debe usar la cerradura?

Por ejemplo, tiene sentido con aplicaciones multiproceso porque protege los datos. ¿Pero es necesario cuando la aplicación no genera ningún otro subproceso?

¿Hay problemas de rendimiento con el uso de bloqueo?

Acabo de heredar una aplicación que usa el bloqueo en todas partes, y es de un solo subproceso y quiero saber si debo dejarlos, ¿son necesarios?

Tenga en cuenta que esta es más una pregunta de conocimiento general, la velocidad de la aplicación está bien, quiero saber si es un buen patrón de diseño para seguir en el futuro o si esto se debe evitar a menos que sea absolutamente necesario.

Respuestas a la pregunta(10)

Su respuesta a la pregunta