mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 07:43:26 +00:00
Addresses #23825 by using the approaching described in https://github.com/nim-lang/Nim/pull/23743#issuecomment-2199523110. This takes the approach from Python's `subprocess` library which calls `waitid` in loop, while sleeping at regular intervals. CC @alex65536
This commit is contained in:
@@ -15,4 +15,19 @@ block: # bug #5091
|
||||
discard
|
||||
|
||||
# check that we don't have to wait msWait milliseconds
|
||||
doAssert(getTime() < atStart + milliseconds(msWait))
|
||||
doAssert(getTime() < atStart + milliseconds(msWait))
|
||||
|
||||
block: # bug #23825
|
||||
var thr: array[0..99, Thread[int]]
|
||||
|
||||
proc threadFunc(i: int) {.thread.} =
|
||||
let sleepTime = float(i) / float(thr.len + 1)
|
||||
doAssert sleepTime < 1.0
|
||||
let p = startProcess("sleep", workingDir = "", args = @[$sleepTime], options = {poUsePath, poParentStreams})
|
||||
# timeout = 1_000_000 seconds ~= 278 hours ~= 11.5 days
|
||||
doAssert p.waitForExit(timeout=1_000_000_000) == 0
|
||||
|
||||
for i in low(thr)..high(thr):
|
||||
createThread(thr[i], threadFunc, i)
|
||||
|
||||
joinThreads(thr)
|
||||
|
||||
Reference in New Issue
Block a user