Поделиться через


Обработка мьютекса в AVStream

Третьим мьютексом является обработка мьютекса. Отдельные фильтры и контакты имеют собственные мьютексы обработки. AVStream независимо получает мьютекс обработки перед обработкой на уровне фильтра и пин-кода, чтобы синхронизировать доступ к структурам, связанным с обработкой. AVStream также получает мьютекс обработки во время других операций, включая привязку контактов к секции канала, операции питания спящего режима или пробуждения и изменение дескрипторов. Мини-накопители могут вручную получить мьютекс для выполнения синхронной операции, такой как обработка или изменение дескриптора. Мини-driver должен получить мьютекс обработки, прежде чем он вносит какие-либо изменения, которые не могут произойти одновременно с обработкой.

Как и другие два типа мьютексов, обработка мьютексов не выполняется рекурсивно. Это означает, что если мини-диск пытается захватить мьютекс обработки во время обработки, возникает взаимоблокировка.

Не используйте мьютекс обработки для приостановки обработки на длительные периоды времени. Вместо этого управляйте шлюзом управления обработкой напрямую с помощью функций KSGATEXxx .

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

Для управления обработкой мьютекса используйте следующие функции:

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex