Scheduling In Go : Part II - Go Scheduler

此文是系列文章的第二篇,将提供对Go调度器背后的机制和语义的理解。

Introduction

在调度系列的第一节,我解释了操作系统调度器的一些方面,我认为这些方面对于理解和学习Go语言调度器的语义是重要的。在这篇文章中,我将在语义层次上介绍Go语言调度器是如何工作的并且集中于高层次行为。Go调度器是一个复杂的系统,一些小的机械细节是不重要的。重要的是要有一个好的模型来描述事物的工作和行为。这将有助于你更好地做出工程决定。

Scheduling In Go : Part I - OS Scheduler

此文是系列文章的第一篇,将提供对操作系统调度的理解。

Introduction

Go调度的设计与实现提供了高效率和高性能的多线程,然而如果你的Go程序多线程设计不支持Go调度的工作,那这也将无济于事。本文主要集中于调度程序的高级机制和语义,展现出多线程工作的一些细节,从而帮助你更好的做出工程决策。

安装golang多版本管理器gvm

为什么要多版本

golang每个版本都有不少调整,在学习golang的过程中可能会需要用到不同版本,比如工作项目用的版本较低,但自己又想试试最新的版本等等,这时候就需要一个多版本管理器来方便切换各种版本

Golang切片扩容机制

前言

相信很多goher都知道slice在append时如果超出了原来的容量时会翻倍扩容。

疑问

这种翻倍扩容是可持续的吗?比如slice已经4GB了,这个时候难道会直接申请8GB?带着这个疑问我们直接去源码里找答案。