Made QueueMain() immune to collisions.

This commit is contained in:
Pietro Gagliardi 2015-12-21 14:26:09 -05:00
parent 01893daaf1
commit 4b74894536
1 changed files with 8 additions and 2 deletions

10
main.go
View File

@ -83,8 +83,14 @@ func QueueMain(f func()) {
qmlock.Lock()
defer qmlock.Unlock()
n := qmcurrent
qmcurrent++
n := uintptr(0)
for {
n = qmcurrent
qmcurrent++
if qmmap[n] == nil {
break
}
}
qmmap[n] = f
C.realQueueMain(unsafe.Pointer(n))
}