This is probably due to improvements in preemption.
Garbage collectors often need some linearizable checkpoint (or an atomic
commit point) where every CPU core agrees on a state. For instance,
enabling a write barrier on the heap.
Back in the day, this was achieved on communication via channels,
I am not certain but the reason probably is the change to go-routine
preemption in 1.14. From https://golang.org/doc/go1.14#runtime
…
Goroutines are now asynchronously preemptible. As a result, loops
without function calls no longer potentially deadlock the scheduler or
significantly delay gar
Hi all,
writing a stress test case for one of my apps I noticed a very strange
thing: my test case works well on go 1.14 but it doesn't work on go 1.13.
I wrote a minimal reproducer
https://play.golang.org/p/uHkKMINncUB
to make it work on go 1.13 I have to add the sleep at line 41. In Go
play