Windows для профессионалов

       

Мьютексы и критические секции


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

Характеристики

Объект-мьютекс

Обьект — критическая секция

Быстродействие



Малое

Высокое

Возможность использования за границами процесса

Да

Нет

Объявление

HANDLE hmfx;

CRITICAL_SECTION cs;

Инициализация

hmtx = CreateMutex (NULL, FALSE, NULL);

InitializeCriticalSection(&cs);

Очистка

CloseHandle(hmtx);

DeleteCriticalSection(&cs);

Бесконечное ожидание

WaitForSingleObject (hmtx, INFINITE);

EnterCrittcalSection(&cs);

Ожидание в течение 0 мс

WaitForSingleObject (hmtx, 0);

TryEnterCriticalSection (&cs);

Ожидание в течение произвольного периода времени

WaitForSingleObject (hmtx, dwMilliseconds);

Невозможно

Освобождение

ReleaseMutex(hmtx);

LeaveCriticalSecliun(&cs);

Возможность параллельного ожидания других объектов ядра

Да (с помощью WaitForMultipleObjects или аналогичной функции)

Нет



Содержание раздела