Go 语言调度器与 Goroutine

Go 语言在并发编程方面有着非常强大的能力,这也离不开语言层面对并发编程的支持,我们会在 Go 语言中使用 Goroutine 并行执行任务并将 Channel 作为 Goroutine 之间的通信方式,虽然使用互斥锁和共享内存在 Go 语言中也可以完成 Goroutine 间的通信,但是使用 Channel 才是更推荐的做法 — **不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存**。我们在这一节中不仅会介绍 Go 语言中的协程 Goroutine 的数据结构和实现原理,还会介绍调度器是如何对 Goroutine 进行调度的,其中包括调度的时机和过程。 »

Golang 并发编程与定时器

对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对时间在一个分布式系统中显得更为重要,我们在这一节中就会介绍 Go 语言中的定时器以及它在并发编程中起到什么样的作用。绝对时间一定不会是完全准确的,它对于一个运行中的分布式系统其实没有太多指导意义,但是由于相对时间的计算不依赖于外部的系统,所以它的计算可以做的比较准确,我们在这一节中就会介绍 Go 语言中用于计算相对时间的定时器的实现原理。 »