本文将重点帮助您了解 Golang 中的 goroutines。Go 调度程序如何工作以在 Go 中实现最佳并发性能。我会尽力用简单的语言解释,这样你就可以理解了。
我们将介绍什么是操作系统中的线程和进程,什么是并发,为什么实现并发很难,以及 goroutines 如何帮助我们实现并发。然后,我们将深入研究 Golang 的内部架构,即 Go Scheduler,它管理多个 goroutine 的调度,以便每个 goroutine 获得公平的机会,并且本质上不会阻塞。
让我们举个例子来理解并发性。考虑到同时,您有多个准备执行的进程。现在,我如何按一定的顺序运行它们,以便每个进程都有公平的执行机会,并且它不会阻塞等待它完成的其他进程?
OS(操作系统)的工作是处理这个问题。OS 在一段时间内为每个进程分配一个 CPU,一次分配一个 CPU。一旦该时间段结束,或者由于任何 I/O 操作而被阻止,就会发生上下文切换?