spawn has a chance of working on posix
This commit is contained in:
parent
4075159933
commit
36fc1d9d72
1 changed files with 14 additions and 4 deletions
|
|
@ -46,20 +46,30 @@ type
|
||||||
c: TSysCond
|
c: TSysCond
|
||||||
when defined(posix):
|
when defined(posix):
|
||||||
stupidLock: TSysLock
|
stupidLock: TSysLock
|
||||||
|
counter: int
|
||||||
|
|
||||||
proc createCondVar(): CondVar =
|
proc createCondVar(): CondVar =
|
||||||
initSysCond(result.c)
|
initSysCond(result.c)
|
||||||
when defined(posix):
|
when defined(posix):
|
||||||
initSysLock(result.stupidLock)
|
initSysLock(result.stupidLock)
|
||||||
acquireSys(result.stupidLock)
|
#acquireSys(result.stupidLock)
|
||||||
|
|
||||||
proc await(cv: var CondVar) =
|
proc await(cv: var CondVar) =
|
||||||
when defined(posix):
|
when defined(posix):
|
||||||
|
acquireSys(cv.stupidLock)
|
||||||
|
while cv.counter <= 0:
|
||||||
waitSysCond(cv.c, cv.stupidLock)
|
waitSysCond(cv.c, cv.stupidLock)
|
||||||
|
dec cv.counter
|
||||||
|
releaseSys(cv.stupidLock)
|
||||||
else:
|
else:
|
||||||
waitSysCondWindows(cv.c)
|
waitSysCondWindows(cv.c)
|
||||||
|
|
||||||
proc signal(cv: var CondVar) = signalSysCond(cv.c)
|
proc signal(cv: var CondVar) =
|
||||||
|
when defined(posix):
|
||||||
|
acquireSys(cv.stupidLock)
|
||||||
|
inc cv.counter
|
||||||
|
releaseSys(cv.stupidLock)
|
||||||
|
signalSysCond(cv.c)
|
||||||
|
|
||||||
type
|
type
|
||||||
FastCondVar = object
|
FastCondVar = object
|
||||||
|
|
@ -70,7 +80,7 @@ proc createFastCondVar(): FastCondVar =
|
||||||
initSysCond(result.slow.c)
|
initSysCond(result.slow.c)
|
||||||
when defined(posix):
|
when defined(posix):
|
||||||
initSysLock(result.slow.stupidLock)
|
initSysLock(result.slow.stupidLock)
|
||||||
acquireSys(result.slow.stupidLock)
|
#acquireSys(result.slow.stupidLock)
|
||||||
result.event = false
|
result.event = false
|
||||||
result.slowPath = false
|
result.slowPath = false
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue