mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
fixes #10795
This commit is contained in:
@@ -167,7 +167,7 @@ export asyncstreams
|
||||
type
|
||||
PDispatcherBase = ref object of RootRef
|
||||
timers*: HeapQueue[tuple[finishAt: float, fut: Future[void]]]
|
||||
callbacks*: Deque[proc ()]
|
||||
callbacks*: Deque[proc () {.gcsafe.}]
|
||||
|
||||
proc processTimers(
|
||||
p: PDispatcherBase, didSomeWork: var bool
|
||||
@@ -200,7 +200,9 @@ proc adjustTimeout(pollTimeout: int, nextTimer: Option[int]): int {.inline.} =
|
||||
if pollTimeout == -1: return
|
||||
result = min(pollTimeout, result)
|
||||
|
||||
proc callSoon*(cbproc: proc ()) {.gcsafe.}
|
||||
proc callSoon*(cbproc: proc () {.gcsafe.}) {.gcsafe.}
|
||||
## Schedule `cbproc` to be called as soon as possible.
|
||||
## The callback is called when control returns to the event loop.
|
||||
|
||||
proc initCallSoonProc =
|
||||
if asyncfutures.getCallSoonProc().isNil:
|
||||
@@ -1806,9 +1808,7 @@ proc readAll*(future: FutureStream[string]): Future[string] {.async.} =
|
||||
else:
|
||||
break
|
||||
|
||||
proc callSoon*(cbproc: proc ()) =
|
||||
## Schedule `cbproc` to be called as soon as possible.
|
||||
## The callback is called when control returns to the event loop.
|
||||
proc callSoon(cbproc: proc () {.gcsafe.}) =
|
||||
getGlobalDispatcher().callbacks.addLast(cbproc)
|
||||
|
||||
proc runForever*() =
|
||||
|
||||
@@ -1,16 +1,29 @@
|
||||
discard """
|
||||
output: "0"
|
||||
output: '''0
|
||||
hello'''
|
||||
"""
|
||||
|
||||
type
|
||||
CircAlloc* [Size: static[int] , T] = tuple
|
||||
baseArray : array[Size,T]
|
||||
index : uint16
|
||||
CircAlloc*[Size: static[int], T] = tuple
|
||||
baseArray: array[Size,T]
|
||||
index: uint16
|
||||
|
||||
type
|
||||
Job = object of RootObj
|
||||
|
||||
var foo {.threadvar.}: CircAlloc[1,Job]
|
||||
var foo {.threadvar.}: CircAlloc[1, Job]
|
||||
|
||||
when true:
|
||||
echo foo.index
|
||||
|
||||
|
||||
# bug #10795
|
||||
import asyncdispatch
|
||||
import threadpool
|
||||
|
||||
proc f1() =
|
||||
waitFor sleepAsync(100)
|
||||
echo "hello"
|
||||
|
||||
spawn f1()
|
||||
sync()
|
||||
|
||||
Reference in New Issue
Block a user