Fungsi SleepConditionVariableSRW (synchapi.h)

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

Sintaks

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

Parameter

[in, out] ConditionVariable

Penunjuk ke variabel kondisi. Variabel ini harus diinisialisasi menggunakan fungsi InitializeConditionVariable .

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

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

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

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

Keterangan

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

Utas dapat dibangunkan menggunakan fungsi WakeConditionVariable atau WakeAllConditionVariable . Setelah utas terbangun, ia memperoleh kembali kunci yang dilepaskannya ketika utas memasuki status tidur.

Variabel kondisi tunduk pada bangun yang melelahkan (yang tidak terkait dengan bangun eksplisit) dan wakeup yang dicuri (utas lain berhasil berjalan 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]
Target Platform Windows
Header synchapi.h (termasuk Windows.h pada Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Kunci Pembaca/Penulis Ramping (SRW)

Fungsi Sinkronisasi

Api Vertdll tersedia di enklave VBS