Ответ 1

A Monitor управляется и более легким - но ограничивается вашим AppDomain. A Mutex может быть назван и может охватывать процессы (допускающие некоторые простые сценарии IPC между приложениями) и может использоваться в коде, который хочет обработать wait-handle).

Для большинства простых сценариев Monitor (через lock) в порядке.

Ответ 2

Хорошим источником рекомендаций по этому поводу является "Threading in С#" Джозефа Альбахари. Все содержимое доступно в Интернете. На мой взгляд, стоит прочитать всю книгу, но вы можете проверить эти части:

Хотя он не охватывает .NET 4.0 новые параллельные конструкции, это очень хорошая отправная точка.

Обновить. Книга обновлена. Теперь он охватывает параллельное программирование .NET 4.0 в часть 5.

Ответ 3

Мьютекс можно разделить между процессами и гораздо более тяжелый, чем монитор.

Используйте монитор, если вам не нужна синхронизация между границами процесса.