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


Функция RtwqAllocateSerialWorkQueue (rtworkq.h)

Создает виртуальную рабочую очередь поверх другой рабочей очереди, которая гарантированно сериализует рабочие элементы. Последовательная рабочая очередь служит оболочкой для существующей многопоточной рабочей очереди. Последовательная рабочая очередь применяет порядок выполнения в порядке первого входа (FIFO).

Синтаксис

HRESULT RtwqAllocateSerialWorkQueue(
  [in]  DWORD workQueueIdIn,
  [out] DWORD *workQueueIdOut
);

Параметры

[in] workQueueIdIn

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

  • Рабочая очередь по умолчанию (RTWQ_STANDARD_WORKQUEUE). См . RTWQ_WORKQUEUE_TYPE.
  • Многопоточность платформы (RTWQ_MULTITHREADED_WORKQUEUE). См . RTWQ_WORKQUEUE_TYPE.
  • Многопоточность очереди, возвращаемая функцией RtwqLockSharedWorkQueue .
  • Последовательная очередь, созданная функцией RtwqAllocateSerialWorkQueue .

[out] workQueueIdOut

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

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

Эта функция может возвращать одно из этих значений.

Код возврата Описание
S_OK
Функция выполнена успешно.
E_FAIL
Приложение превысило максимальное число рабочих очередей.
RTWQ_E_SHUTDOWN
Приложение не вызывало RtwqStartup, или приложение уже вызывало RtwqShutdown.

Комментарии

Завершив работу с рабочей очередью, вызовите RtwqUnlockWorkQueue.

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

Требования

Требование Значение
Минимальная версия клиента Windows 8.1 [только классические приложения]
Минимальная версия сервера Windows Server 2012 R2 [только классические приложения]
Целевая платформа Windows
Header rtworkq.h
Библиотека Rtworkq.lib
DLL RTWorkQ.dll

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

RTWQ_WORKQUEUE_TYPE