2009-11-19 2 views
1

Можно создать дубликат:
Monitor vs Mutex in c#замок, монитор, Мьютекс

Привет,

На этом сайте я нашел разные разные ответы от разных людей, что делает запутанной. все еще не совсем ясно, по какому сценарию каждое из трех условий [Lock, Monitor, Mutex] будет очень полезно для использования в реальном времени. Делает гораздо больше путаницы между этими терминами.

Мне потребовались бы очень четкие различия в глубине высокого уровня и которые по существу необходимы для использования между каждым из трех терминов с лучшим примером и с ясным пониманием.

Просьба предоставить информацию на очень высоком уровне использования в реальном времени или использовать C# .NET с очень хорошим примером.

Благодаря Sukumar

+1

У этого вопроса были довольно ясные ответы: http://stackoverflow.com/questions/1164038/monitor-vs-mutex-in-c –

+0

Ответы на этот вопрос также совершенно ясны: http://stackoverflow.com/questions/ 301160/what-are-the-difference-between-different-threading-synchronization-options-in-c –

ответ

4
  • 'Lock' A представляет собой общий термин, может означать несколько вещей
  • заявление замки, lock(x) { } использует класс Monitor
  • класс Monitor является (относительно) легкий класс mutex. Он полностью построен в управляемом коде и не нуждается в взаимодействии с WIN32 API
  • Mutex - это класс Win32. Именованные мьютексы могут быть полезны для синхронизации приложений, но в противном случае используйте Monitor.
  • Вы забыли ResetEvents и Waithandles
9

упрощенный и коротко:

Monitor является управляемой синхронизации .NET примитива (сфера только один домен приложения). C# lock() ничего не делает, кроме использования Monitor и предложения try...finally, чтобы убедиться, что блокировка выпущена в случае исключения.

Mutex - это объект синхронизации ОС, который также может использоваться для синхронизации по нескольким процессам (через именованный мьютекс).

+3

+1 для внутренней блокировки монитора. Наконец, проверьте попытку монитора. http://msdn.microsoft.com/en-us/library/ ms173179 (VS.80) .aspx «Использование ключевого слова блокировки, как правило, предпочтительнее, чем использование класса« Монитор », так как блокировка более кратка, и поскольку блокировка обеспечивает освобождение основного монитора, даже если защищенный код генерирует исключение «. MSDN – PRR

Смежные вопросы