diff options
author | flywind <xzsflywind@gmail.com> | 2021-04-19 16:51:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-19 10:51:13 +0200 |
commit | dc89b212572fecd449dd469ffb2424c78941c12f (patch) | |
tree | f1458632d93f4c94e06dd3114e49773519ffad56 /lib/system/sysspawn.nim | |
parent | cedbc7035d171d1535365c8acb889911b839ce99 (diff) | |
download | Nim-dc89b212572fecd449dd469ffb2424c78941c12f.tar.gz |
[std/locks]close #7998(complete condition variables) (#17711)
* close #7998 * workaround genode * Update lib/system/syslocks.nim
Diffstat (limited to 'lib/system/sysspawn.nim')
-rw-r--r-- | lib/system/sysspawn.nim | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/lib/system/sysspawn.nim b/lib/system/sysspawn.nim index d1f5803f4..c9b9a68f0 100644 --- a/lib/system/sysspawn.nim +++ b/lib/system/sysspawn.nim @@ -20,34 +20,28 @@ when not declared(NimString): type CondVar = object c: SysCond - when defined(posix): - stupidLock: SysLock - counter: int + stupidLock: SysLock + counter: int proc createCondVar(): CondVar = initSysCond(result.c) - when defined(posix): - initSysLock(result.stupidLock) - #acquireSys(result.stupidLock) + initSysLock(result.stupidLock) + #acquireSys(result.stupidLock) proc destroyCondVar(c: var CondVar) {.inline.} = deinitSysCond(c.c) proc await(cv: var CondVar) = - when defined(posix): - acquireSys(cv.stupidLock) - while cv.counter <= 0: - waitSysCond(cv.c, cv.stupidLock) - dec cv.counter - releaseSys(cv.stupidLock) - else: - waitSysCondWindows(cv.c) + acquireSys(cv.stupidLock) + while cv.counter <= 0: + waitSysCond(cv.c, cv.stupidLock) + dec cv.counter + releaseSys(cv.stupidLock) proc signal(cv: var CondVar) = - when defined(posix): - acquireSys(cv.stupidLock) - inc cv.counter - releaseSys(cv.stupidLock) + acquireSys(cv.stupidLock) + inc cv.counter + releaseSys(cv.stupidLock) signalSysCond(cv.c) type @@ -57,8 +51,7 @@ type proc createFastCondVar(): FastCondVar = initSysCond(result.slow.c) - when defined(posix): - initSysLock(result.slow.stupidLock) + initSysLock(result.slow.stupidLock) #acquireSys(result.slow.stupidLock) result.event = false result.slowPath = false |