1、调度器改造 1.1 原生golang调度器 1.1.1 调度器架构 图1 原生调度器架构 1.1.2 数据结构 runqhead:代表P本地任务队列头指针,获取任务时向前移动,可能会被多个线程同时修改。 runqtail:代表P本地任务队列尾指针,增加任务时向前移动,只能被当前线程修改。 runq:代表P本地任务队列。 runnext:代表下一次将运行的任务。 1.1.3 算法流程 调度器的主要算法集中在处理任务队列变化情况,其中任务队列包括P的本地任务队列和全局任务队列,任务队列的变化主要包括以下几种情况: …