Когда использовать монитор и когда использовать Mutex в С#?
Ответ 1
A Monitor управляется и более легким - но ограничивается вашим AppDomain. A Mutex может быть назван и может охватывать процессы (допускающие некоторые простые сценарии IPC между приложениями) и может использоваться в коде, который хочет обработать wait-handle).
Для большинства простых сценариев Monitor (через lock) в порядке.
Ответ 2
Хорошим источником рекомендаций по этому поводу является "Threading in С#" Джозефа Альбахари. Все содержимое доступно в Интернете. На мой взгляд, стоит прочитать всю книгу, но вы можете проверить эти части: