Функция MFLockSharedWorkQueue (mfapi.h)

Получает и блокирует общую рабочую очередь.

Синтаксис

HRESULT MFLockSharedWorkQueue(
  [in]      PCWSTR wszClass,
  [in]      LONG   BasePriority,
  [in, out] DWORD  *pdwTaskId,
  [out]     DWORD  *pID
);

Параметры

[in] wszClass

Имя задачи MMCSS.

[in] BasePriority

Базовый приоритет потоков рабочей очереди.

Если используется очередь с регулярным приоритетом (wszClass=""), необходимо передать значение 0.

[in, out] pdwTaskId

Идентификатор задачи MMCSS. На входных данных укажите идентификатор существующей группы задач MCCSS или используйте нулевое значение для создания новой группы задач. Если используется очередь с обычным приоритетом (wszClass=""), необходимо передать значение NULL . В выходных данных получает фактический идентификатор группы задач.

[out] pID

Получает идентификатор для новой рабочей очереди. Используйте этот идентификатор при постановке рабочих элементов в очередь.

Возвращаемое значение

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Многопоточность рабочей очереди использует пул потоков для отправки рабочих элементов. Всякий раз, когда поток становится доступным, он удаляет следующий рабочий элемент из очереди. Рабочие элементы выводятся из очереди в порядке "первым в очереди", но рабочие элементы не сериализуются. Иными словами, рабочая очередь не ожидает завершения рабочего элемента перед запуском следующего рабочего элемента.

В рамках одного процесса платформа Microsoft Media Foundation создает до одной многопоточной очереди для каждой задачи службы планировщика мультимедийных классов (MMCSS). Функция MFLockSharedWorkQueue проверяет, существует ли соответствующая рабочая очередь. В противном случае функция создает новую рабочую очередь и регистрирует ее в MMCSS. Функция возвращает идентификатор задачи MMCSS (pdwTaskId) и идентификатор рабочей очереди (pID). Чтобы поставить рабочий элемент в очередь, передайте идентификатор рабочей очереди в любую из следующих функций:

Функция MFLockSharedWorkQueue также блокирует очередь. Перед завершением процесса вызовите MFUnlockWorkQueue , чтобы разблокировать рабочую очередь.

Если используется очередь с обычным приоритетом (wszClass=""), значение NULL должно быть передано в pdwTaskId , а значение 0 — в BasePriority.

Требования

   
Минимальная версия клиента Windows 8 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header mfapi.h
Библиотека Mfplat.lib
DLL Mfplat.dll

См. также раздел

Функции Media Foundation

Улучшения рабочих очередей и потоков

Рабочие очереди