Bagikan melalui


Fungsi MFAllocateSerialWorkQueue (mfapi.h)

Membuat antrean kerja yang dijamin untuk menserialisasikan item kerja. Antrean kerja serial membungkus antrean kerja multithread yang ada. Antrean kerja serial memberlakukan urutan eksekusi first-in, first-out (FIFO).

Sintaks

HRESULT MFAllocateSerialWorkQueue(
  [in]  DWORD dwWorkQueue,
  [out] DWORD *pdwWorkQueue
);

Parameter

[in] dwWorkQueue

Pengidentifikasi antrean kerja yang ada. Ini harus berupa antrean multithreaded atau antrean kerja serial lainnya. Salah satu hal berikut ini dapat digunakan:

  • Antrean kerja default (MFASYNC_CALLBACK_QUEUE_STANDARD)
  • Antrean multithread platform (MFASYNC_CALLBACK_QUEUE_MULTITHREADED)
  • Antrean multithread yang dikembalikan oleh fungsi MFLockSharedWorkQueue .
  • Antrean serial yang dibuat oleh fungsi MFAllocateSerialWorkQueue .

[out] pdwWorkQueue

Menerima pengidentifikasi untuk antrean kerja serial baru. Gunakan pengidentifikasi ini saat mengantre item kerja.

Menampilkan nilai

Fungsi ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Fungsi berhasil.
E_FAIL
Aplikasi melebihi jumlah maksimum antrean kerja.
MF_E_SHUTDOWN
Aplikasi tidak memanggil MFStartup, atau aplikasi telah memanggil MFShutdown.

Keterangan

Setelah selesai menggunakan antrean kerja, panggil MFUnlockWorkQueue.

Antrean multithread menggunakan kumpulan utas, yang dapat mengurangi jumlah total utas dalam alur. Namun, mereka tidak membuat serial item kerja. Antrean kerja serial memungkinkan aplikasi untuk mendapatkan manfaat dari kumpulan utas, tanpa perlu melakukan serialisasi manual item kerjanya sendiri.

Mode Balasan

Antrean serializer juga dapat berfungsi dalam mode "balasan". Jika metode IMFAsyncCallback::GetParameters penelepon mengembalikan bendera MFASYNC_REPLY_CALLBACK , antrean serializer tidak secara otomatis maju ke item kerja berikutnya. Sebaliknya, antrean menunggu balasan dari pemanggil. Pemanggil memberi sinyal balasan dengan memanggil objek hasil asinkron yang diteruskan antrean kerja ke metode Panggil . Kode berikut menggambarkan bagaimana pemanggil memberi sinyal antrean kerja.
HRESULT CCallback::Invoke(IMFAsyncResult *pResult)
{
    DoSomeWork();
    
    // Reply to the work queue that you are done.
    MFInvokeCallback(pResult);

    // Note: This call to MFInvokeCallback does not have to occur inside the
    // Invoke method. You could call MFInvokeCallback at a later time. 

    return S_OK;
}
HRESULT CCallback::GetParameters(DWORD *pdwFlags, DWORD *pdwQueue)
{
    *pdwFlags = MFASYNC_REPLY_CALLBACK;
    *pdwQueue = m_QueueId;
    return S_OK;
}

Persyaratan

   
Klien minimum yang didukung Windows 8 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mfapi.h
DLL Mfplat.dll

Lihat juga

Fungsi Media Foundation

Peningkatan Antrean kerja dan Utas