Fungsi SleepConditionVariableCS (synchapi.h)
Tidur pada variabel kondisi yang ditentukan dan merilis bagian kritis yang ditentukan sebagai operasi atomik.
Sintaks
BOOL SleepConditionVariableCS(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PCRITICAL_SECTION CriticalSection,
[in] DWORD dwMilliseconds
);
Parameter
[in, out] ConditionVariable
Penunjuk ke variabel kondisi. Variabel ini harus diinisialisasi menggunakan fungsi InitializeConditionVariable .
[in, out] CriticalSection
Penunjuk ke objek bagian penting. Bagian penting ini harus dimasukkan tepat sekali oleh pemanggil pada saat SleepConditionVariableCS dipanggil.
[in] dwMilliseconds
Interval waktu habis, dalam milidetik. Jika interval waktu habis berlalu, fungsi memperoleh kembali bagian penting dan mengembalikan nol. Jika dwMilliseconds adalah nol, fungsi menguji status objek yang ditentukan dan segera kembali. Jika dwMilliseconds adalah INFINITE, interval waktu habis fungsi tidak pernah berlalu. Untuk informasi selengkapnya, lihat Keterangan.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal atau interval waktu habis berlalu, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kemungkinan kode kesalahan termasuk ERROR_TIMEOUT, yang menunjukkan bahwa interval waktu habis telah berlalu sebelum utas lain mencoba membangunkan utas tidur.
Keterangan
Utas yang tidur pada variabel kondisi dapat dibangunkan sebelum interval batas waktu yang ditentukan berlalu menggunakan fungsi WakeConditionVariable atau WakeAllConditionVariable . Dalam hal ini, utas bangun ketika pemrosesan bangun selesai, dan bukan ketika interval waktu habisnya berlalu. Setelah utas dibangunkan, ia memperoleh kembali bagian kritis yang dirilis ketika utas memasuki status tidur.
Variabel kondisi tunduk pada bangun yang memacu (yang tidak terkait dengan bangun eksplisit) dan bangun yang dicuri (utas lain berhasil dijalankan sebelum utas woken). Oleh karena itu, Anda harus mencentang kembali predikat (biasanya dalam perulangan while
) setelah operasi tidur kembali.
Contoh
Untuk contoh yang menggunakan fungsi ini, lihat Menggunakan Variabel Kondisi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2008 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | synchapi.h (sertakan Windows.h pada Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |