admin管理员组

文章数量:1442242

程序员眼中的控制流

分类

技术

说明

顺序控制流

顺序

多条语句顺序执行

选择

if-else、switch

循环

for、while、do while

跳转

break、continue、return

函数调用

●控制流:调用时,控制权转到被调用函数 ●上下文切换:开销小,栈帧压栈退栈而已 ●上下文内容:函数的临时变量和返回地址

并发控制流

协程

●控制流:协程是一种线程内多任务调度机制 ●协程调度:手动控制,用Python async库等 ●协程通信:消息传递或直接调用彼此的函数 ●上下文切换:开销较小,不涉及内核态切换 ●上下文内容:仅含局部变量、程序计数器等

线程

●控制流:线程有自己的栈,使程序不同部分并发运行 ●线程调度:OS内核负责,或用户态线程库管理负责 ●线程通信:共享变量、Queue通信、信号量 ●上下文切换:设计内核态,开销比协程大 ●上下文内容:寄存器、PC、栈指针、TLS变量

进程

●控制流:程序的执行实例,拥有独立地址空间和资源 ●进程调度:OS内核负责 ●进程通信:共享内存、Queue通信、管道 ●上下文切换:开销大,涉及虚拟地址空间、fd资源等 ●上下文内容:寄存器,堆栈,fd和uid等多系统资源

其他

●例如:Actor模型,多Actor并发执行、消息通信

传统嵌入式 并发控制流

中断ISR

●任务:ISR≈任务函数 ●调度:中断处理机制≈硬件回调软件

Super loop任务

●任务:main Loop中循环运行的一个函数 ●调度:main Loop中多任务,物理串行,逻辑并发

Time slice任务

●任务:按固定频率运行的一个函数 ●调度:定时器中断辅助下,各任务以固定频率执行

RTOS任务

●任务:RTOS支持的Task ●调度:RTOS负责调度,Task有独立的栈和优先级

本文标签: 程序员眼中的控制流