码农都懂的一句话:C 语言无所不能,什么都能搞。把 C 学好,上手其他语言也会事半功倍。因为热爱 C 语言,所以才有了这篇 Chat 。
一直以来,我们学习线程切换与调度,都是通过阅读操作系统书籍或 Linux 源码甚至反汇编 Window 内核代码。无论怎样,这些东西都很抽象,学习起来十分困难。
另外,随着现代化编程语言逐渐流行,C++20 的正式发布,都离不开用户态线程这些基础知识。再比如 Golang 的 Goroutine,腾讯公司的开源的 libco,百度的 BRPC 中的 bthread,如果想深刻理解它们,都需要扎实的基本功。
本文会带你循序渐近的掌握以下知识点:
控制流切换原理
上下文切换
线程设计
调度函数的封装与代码模块化
线程的主动切换
时间片轮转调度
本文实验环境:
ubuntu 16.04 32 位操作系统(读者请务必提前安装好);
挑选一个你自己觉得好用的虚拟机软件,比如 VMWare;
请把你的虚拟机环境配置成单核 CPU
回归正文,我为什么要使用 32 位系统?因为方便初学者学习,也能更快速的掌握原理。
需要注意的是,本文的代码,并没有使用操作系统为我们提供的 pthread 系列函数,thread_create 和 threa
版权声明:本文为weixin_42976659原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。