《Go 语言原本》

6.13 进一步阅读的参考文献

[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