Add cond_wait_with_timeout

This commit is contained in:
gingerBill
2021-10-11 12:55:25 +01:00
parent 49c761dc6d
commit 73cba2cf13
6 changed files with 60 additions and 13 deletions
+8
View File
@@ -2,6 +2,7 @@
//+private
package sync2
import "core:time"
import win32 "core:sys/windows"
_current_thread_id :: proc "contextless" () -> int {
@@ -61,6 +62,13 @@ _cond_wait :: proc(c: ^Cond, m: ^Mutex) {
_ = win32.SleepConditionVariableSRW(&c.impl.cond, &m.impl.srwlock, win32.INFINITE, 0)
}
_cond_wait_with_timeout :: proc(c: ^Cond, m: ^Mutex, duration: time.Duration) -> bool {
duration := u32(duration / time.Millisecond)
ok := win32.SleepConditionVariableSRW(&c.impl.cond, &m.impl.srwlock, duration, 0)
return bool(ok)
}
_cond_signal :: proc(c: ^Cond) {
win32.WakeConditionVariable(&c.impl.cond)
}