Made QueueMain() immune to collisions.
This commit is contained in:
parent
01893daaf1
commit
4b74894536
10
main.go
10
main.go
|
@ -83,8 +83,14 @@ func QueueMain(f func()) {
|
||||||
qmlock.Lock()
|
qmlock.Lock()
|
||||||
defer qmlock.Unlock()
|
defer qmlock.Unlock()
|
||||||
|
|
||||||
n := qmcurrent
|
n := uintptr(0)
|
||||||
qmcurrent++
|
for {
|
||||||
|
n = qmcurrent
|
||||||
|
qmcurrent++
|
||||||
|
if qmmap[n] == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
qmmap[n] = f
|
qmmap[n] = f
|
||||||
C.realQueueMain(unsafe.Pointer(n))
|
C.realQueueMain(unsafe.Pointer(n))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue