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 |
---|---|
|
Fungsi berhasil. |
|
Aplikasi melebihi jumlah maksimum antrean kerja. |
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk