Revert "GC_fullCollect on sync threadpool (#6107)" (#6119)

This reverts commit bdb653c415.
This commit is contained in:
Yuriy Glukhov
2017-07-17 14:45:54 +03:00
committed by Andreas Rumpf
parent 733272d55d
commit 30e2af969c

View File

@@ -526,12 +526,10 @@ proc nimSpawn4(fn: WorkerProc; data: pointer; id: ThreadId) {.compilerProc.} =
if selectWorker(addr(distinguishedData[id]), fn, data): break
await(distinguishedData[id].readyForTask)
template spawnInAllThreads(e: untyped) =
## Spawn `e` on all of the threadpool threads.
for i in 0 .. <currentPoolSize:
pinnedSpawn(i, e)
proc syncAux() {.inline.} =
proc sync*() =
## a simple barrier to wait for all spawn'ed tasks. If you need more elaborate
## waiting, you have to use an explicit barrier.
var toRelease = 0
while true:
var allReady = true
@@ -545,12 +543,4 @@ proc syncAux() {.inline.} =
for i in 0 ..< toRelease:
signal(gSomeReady)
proc sync*(cleanup: bool = true) =
## A simple barrier to wait for all spawn'ed tasks. Calls `GC_fullCollect()`
## on all threads if `cleanup` is `true`. If you need more elaborate
## waiting, you have to use an explicit barrier.
syncAux()
if cleanup:
spawnInAllThreads GC_fullCollect()
setup()