有一点不是很明白,线程在切换的时候不是会把当前线程里的上下文保存到线程栈里面保护吗?临界区保护又是什么?不是多此一举吗
临界资源可以是内存单元,也可以是UART,I2C,SPI等外设。
线程切换的上下文保存到线程Stack,只是相当于一个CPU系列寄存器的快照而已,并不清楚每个寄存器中数值的含义,也许是个普通的数据而已,也许是一个指向关键变量的指针。
加临界区保护有两种手段,一种是关闭调度锁(允许中断),一种是关中断。
临界区可以确保全局变量、外设等被独占,关中断方式可以保证一段执行不被打断。
假设:
A线程操作UART发送某个字符,发生TICK中断,B线程延时时间到,切换到B线程。A、B的打印全部混乱。
如果用全局变量理解,也是类似的。
祝顺利!
鞭辟入里!一针见血!