Bagikan melalui


Fungsi SleepConditionVariableCS (synchapi.h)

Tidur pada variabel kondisi yang ditentukan dan merilis bagian penting yang ditentukan sebagai operasi atom.

Syntax

BOOL SleepConditionVariableCS(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PCRITICAL_SECTION   CriticalSection,
  [in]      DWORD               dwMilliseconds
);

Parameter-parameternya

[in, out] ConditionVariable

Penunjuk ke variabel kondisi. Variabel ini harus diinisialisasi dengan memanggil InitializeConditionVariable (untuk menginisialisasi struktur secara dinamis) atau menetapkan konstanta CONDITION_VARIABLE_INIT ke variabel struktur (untuk menginisialisasi struktur secara statis).

[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.

Mengembalikan nilai

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, panggil GetLastError. Kemungkinan kode kesalahan termasuk ERROR_TIMEOUT, yang menunjukkan bahwa interval waktu habis telah berlalu sebelum utas lain mencoba membangunkan utas tidur.

Komentar

Utas yang tidur pada variabel kondisi dapat dibangunkan sebelum interval waktu habis yang ditentukan telah 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 dirilisnya 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 ulang predikat (biasanya dalam perulangan while ) setelah operasi tidur kembali.

Examples

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]
Platform Target Windows
Header synchapi.h (termasuk Windows.h pada Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL Kernel32.dll

Lihat juga

Variabel Kondisi

Fungsi Sinkronisasi

Vertdll API tersedia di enklave VBS