Bagikan melalui


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

Lihat juga

Variabel Kondisi

Fungsi Sinkronisasi

API Vertdll tersedia di enklave VBS