2013-11-18 3 views
0

Я столкнулся с несколькими статьями, рассказывающими о различиях между мьютексами и критическими разделами. Одно из основных различий, с которыми я столкнулся, - это мьютексы, выполняемые в режиме ядра, тогда как критические разделы в основном работают в пользовательском режиме.Является ли использование мьютексов над CS вредным для системы?

Итак, если это так, то применяются приложения, которые используют вредоносные файлы для системы в случае сбоя приложения?

Спасибо.

ответ

1

Использование Win32 Mutexes ручек, когда вам необходимо заблокировать или синхронизировать потоки в разных процессов.

Используйте Win32 CRITICAL_SECTIONs, когда вам необходимо зафиксировать между потоками в пределах процесс. Это дешевле, чем время, и не связано с системным вызовом ядра, если не существует блокировки. Объекты Critical Section в Win32 все равно не могут охватывать границы процесса.

«Вредное» - это неправильное слово для использования. Больше похоже на то, что «мьютексы Win32 немного дороже, чем Win32 Critical Sections с точки зрения производительности». Запустившееся приложение, которое использует мьютексы вместо критических разделов, вряд ли повредит производительности системы. Он будет работать только медленнее. Но в зависимости от того, как часто ваша блокировка будет получена и выпущена, разница может даже не измериться.

Я забыл перформационные показатели, которые я сделал давно. Суть в том, что API-интерфейсы EnterCriticalSection и LeaveCriticalSection имеют порядок 10-100x быстрее, чем эквивалентное использование WaitForSingleObject и ReleaseMutex. (порядка 1 микросекунды против 1 миллисекунды).

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