Bagikan melalui


Fungsi DequeueUmsCompletionListItems (winbase.h)

Mengambil utas pekerja penjadwalan mode pengguna (UMS) dari daftar penyelesaian UMS yang ditentukan.

Peringatan

Pada Windows 11, penjadwalan mode pengguna tidak didukung. Semua panggilan gagal dengan kesalahan ERROR_NOT_SUPPORTED.

Sintaks

BOOL DequeueUmsCompletionListItems(
  [in]  PUMS_COMPLETION_LIST UmsCompletionList,
  [in]  DWORD                WaitTimeOut,
  [out] PUMS_CONTEXT         *UmsThreadList
);

Parameter

[in] UmsCompletionList

Penunjuk ke daftar penyelesaian untuk mengambil utas pekerja.

[in] WaitTimeOut

Interval waktu habis untuk operasi pengambilan, dalam milidetik. Fungsi mengembalikan jika interval berlalu, bahkan jika tidak ada utas pekerja yang diantrekan ke daftar penyelesaian.

Jika parameter WaitTimeOut adalah nol, daftar penyelesaian diperiksa untuk utas pekerja yang tersedia tanpa menunggu utas pekerja tersedia. Jika parameter WaitTimeOut adalah INFINITE, interval waktu habis fungsi tidak pernah berlalu. Namun, ini tidak disarankan karena menyebabkan fungsi diblokir sampai satu atau beberapa utas pekerja tersedia.

[out] UmsThreadList

Penunjuk ke variabel UMS_CONTEXT. Pada output, parameter ini menerima penunjuk ke konteks utas UMS pertama dalam daftar konteks utas UMS.

Jika tidak ada utas pekerja yang tersedia sebelum batas waktu yang ditentukan oleh parameter WaitTimeOut , parameter ini diatur ke NULL.

Mengembalikan nilai

Jika fungsi berhasil, fungsi mengembalikan nilai bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kemungkinan nilai kesalahan termasuk yang berikut ini.

Menampilkan kode Deskripsi
ERROR_TIMEOUT
Tidak ada utas yang tersedia sebelum interval waktu habis yang ditentukan berlalu.
ERROR_NOT_SUPPORTED
UMS tidak didukung.

Keterangan

Sistem mengantrekan utas pekerja UMS ke daftar penyelesaian saat utas pekerja dibuat atau ketika utas pekerja yang diblokir sebelumnya menjadi tidak diblokir. Fungsi DequeueUmsCompletionListItems mengambil penunjuk ke daftar semua konteks utas dalam daftar penyelesaian yang ditentukan. Fungsi GetNextUmsListItem dapat digunakan untuk memunculkan konteks utas UMS dari daftar ke dalam antrean utas siap penjadwal sendiri. Penjadwal bertanggung jawab untuk memilih utas yang akan dijalankan berdasarkan prioritas yang dipilih oleh aplikasi.

Jangan menjalankan utas UMS langsung dari daftar yang disediakan oleh DequeueUmsCompletionListItems, atau jalankan utas yang ditransfer dari daftar ke antrean utas siap sebelum daftar benar-benar kosong. Ini dapat menyebabkan perilaku yang tidak dapat diprediksi dalam aplikasi.

Jika lebih dari satu penelepon mencoba mengambil utas dari daftar penyelesaian bersama, hanya pemanggil pertama yang mengambil utas. Untuk penelepon berikutnya, fungsi DequeueUmsCompletionListItems mengembalikan keberhasilan tetapi parameter UmsThreadList diatur ke NULL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 (hanya 64-bit) [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll
Set API api-ms-win-core-ums-l1-1-0 (diperkenalkan di Windows 7)

Lihat juga

GetNextUmsListItem