[Robert et al., 1999] | Robert D. Blumofe and Charles E. Leiserson. 1999. "Scheduling multithreaded computations by work stealing." J. ACM 46, 5 (September 1999), 720-748. https://dl.acm.org/citation.cfm?id=324234 |
[Mullender and Cox, 2008] | Mullender, Sape, and Russ Cox. "Semaphores in plan 9." 3rd International Workshop on Plan. Vol. 9. 2008. https://swtch.com/semaphore.pdf |
[Stevens et al., 2008] | Stevens, W. Richard, and Stephen A. Rago. "Advanced programming in the UNIX environment." Addison-Wesley, 2008. |
[Cox, 2008] | Russ Cox, "Clean up scheduler." Aug 5, 2008. https://github.com/golang/go/commit/96824000ed89d13665f6f24ddc10b3bf812e7f47#diff-1fe527a413d9f1c2e5e22e08e605a192 |
[Cox, 2009] | Russ Cox, things are much better now, Nov 11, 2009. https://github.com/golang/go/commit/fe1e49241c04c748d0e3f4762925241adcb8d7da |
[Drepper, 2011] | Ulrich Drepper. "Futexes are tricky." Red Hat Inc, Nov 5, 2011. http://people.redhat.com/drepper/futex.pdf |
[Vyukov, 2012] | Dmitry Vyukov. "Scalable Go Scheduler Design Doc." May 2, 2012. https://golang.org/s/go11sched |
[Vyukov, 2013a] | Dmitry Vyukov, "runtime: improved scheduler." Mar 1, 2013. https://github.com/golang/go/commit/779c45a50700bda0f6ec98429720802e6c1624e8 |
[Vyukov, 2013b] | Dmitry Vyukov. "Go Preemptive Scheduler Design Doc." May 15, 2013. https://docs.google.com/document/d/1ETuA2IOmnaQ4j81AtTGT40Y4_Jr6_IDASEKg0t0dBR8/edit#heading=h.3pilqarbrc9h |
[Vyukov, 2013c] | Dmitry Vyukov. "runtime: make timers faster." Aug 24, 2013. https://golang.org/issue/6239 |
[Vyukov, 2014] | Dmitry Vyukov, "NUMA-aware scheduler for Go." Sep 2014. https://docs.google.com/document/u/0/d/1d3iI2QWURgDIsSR6G2275vMeQ_X7w-qxM2Vp7iGwwuM/pub |
[Clements, 2015] | Austin Clements. "runtime: tight loops should be preemptible." May 26, 2015. https://golang.org/issue/10958 |
[Lopez et al., 2016] | Brian Lopez et al. "runtime: let idle OS threads exit." Mar 2, 2016. https://golang.org/issue/14592 |
[Valialkin, 2016] | Aliaksandr Valialkin et al. "runtime: timer doesn't scale on multi-CPU systems with a lot of timers." Apr 5, 2016. https://golang.org/issue/15133 |
[Taylor et al., 2016] | Ian Lance Taylor et al. "runtime: unexpectedly large slowdown with runtime.LockOSThread." Nov 22, 2016. https://golang.org/issue/18023 |
[Hofer et al., 2016] | Phil Hofer et al. "runtime: scheduler is slow when goroutines are frequently woken." Dec 7, 2016. https://golang.org/issue/18237 |
[Chase, 2017] | David Chase. "cmd/compile: loop preemption with fault branch on amd64." May 09, 2019. https://golang.org/cl/43050 |
[Mills, 2017] | Bryan C. Mills. "proposal: runtime: pair LockOSThread, UnlockOSThread calls." May 22, 2017. https://golang.org/issue/20458 |
[Rgooch et al., 2017] | rgooch et al. "runtime: terminate locked OS thread if its goroutine exits." May 17, 2017. https://golang.org/issue/20395 |
[Smelkov et al., 2017] | Kirill Smelkov. "runtime: big performance penalty with runtime.LockOSThread." Sep 10, 2017. https://golang.org/issue/21827 |
[lni et al, 2018] | lni et al. "time: excessive CPU usage when using Ticker and Sleep." Sep 17, 2018. https://golang.org/issue/27707 |
[Hines et al., 2018] | Chris Hines et al. "runtime: scheduler work stealing slow for high GOMAXPROCS." Nov 15, 2018. https://golang.org/issue/28808 |
[Clements, 2019] | Austin Clements. "Proposal: Non-cooperative goroutine preemption." January 18, 2019. https://go.googlesource.com/proposal/+/master/design/24543-non-cooperative-preemption |