Fungsi SleepConditionVariableSRW (synchapi.h)

Tidur pada variabel kondisi yang ditentukan dan melepaskan kunci yang ditentukan sebagai operasi atomik.

Syntax

BOOL SleepConditionVariableSRW(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PSRWLOCK            SRWLock,
  [in]      DWORD               dwMilliseconds,
  [in]      ULONG               Flags
);

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] SRWLock

Penunjuk ke kunci. Kunci ini harus ditahan dengan cara yang ditentukan oleh parameter Bendera .

[in] dwMilliseconds

Interval waktu habis, dalam milidetik. Fungsi mengembalikan jika interval berlalu. Jika dwMilliseconds adalah nol, fungsi menguji status objek yang ditentukan dan segera kembali. Jika dwMilliseconds adalah INFINITE, interval waktu habis fungsi tidak pernah berlalu.

[in] Flags

Jika parameter ini CONDITION_VARIABLE_LOCKMODE_SHARED, kunci SRW berada dalam mode bersama. Jika tidak, kunci dalam mode eksklusif.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah 0. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.

Jika batas waktu habis, fungsi akan kembali FALSE dan GetLastError mengembalikan ERROR_TIMEOUT.

Komentar

Jika kunci tidak terkunci saat fungsi ini dipanggil, perilaku fungsi tidak ditentukan.

Utas dapat dibangunkan menggunakan fungsi WakeConditionVariable atau WakeAllConditionVariable . Setelah utas dibangunkan, ia memperoleh kembali kunci yang dilepaskannya 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.

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

Kunci Pembaca/Penulis Langsing (SRW)

Fungsi Sinkronisasi

Vertdll API tersedia di enklave VBS