Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membuat antrean kerja yang dijamin untuk membuat serial item kerja. Antrean kerja serial membungkus antrean kerja multithread yang ada. Antrean kerja serial memberlakukan urutan eksekusi first-in, first-out (FIFO).
Syntax
HRESULT MFAllocateSerialWorkQueue(
[in] DWORD dwWorkQueue,
[out] DWORD *pdwWorkQueue
);
Parameter-parameternya
[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.
Mengembalikan nilai
Fungsi ini dapat mengembalikan salah satu nilai ini.
| Mengembalikan kode | Description |
|---|---|
|
Fungsi berhasil. |
|
Aplikasi melebihi jumlah maksimum antrean kerja. |
|
Aplikasi tidak memanggil MFStartup, atau aplikasi telah memanggil MFShutdown. |
Komentar
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 "balas". Jika metode IMFAsyncCallback::GetParameters penelepon mengembalikan bendera MFASYNC_REPLY_CALLBACK , antrean serializer tidak secara otomatis maju ke item kerja berikutnya. Sebagai gantinya, 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
| Persyaratan | Nilai |
|---|---|
| Klien minimum yang didukung | Windows 8 [aplikasi desktop | Aplikasi UWP] |
| Server minimum yang didukung | Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
| Platform Target | Windows |
| Header | mfapi.h |
| Library | Mfplat.lib |
| DLL | Mfplat.dll |