这说法有问题,xsemaphoregive是立即调度,但xsemaphoretake不一定是,而且大部分应用都不是立即调度。
比如串口通信中信号量的timeout绝大多数情况是portmaxdelay,这就一定是在tick调度中被唤醒的。
所有的数据通信函数默认都是阻塞函数,阻塞链表进出肯定在tick任务调度里完成的。
【 在 dormouseBHU 的大作中提到: 】
:
: 这里你理解的还是错的。业务处理是否实时与它是否放到中断里是没关系的。正常情况下,业务处理都是放到线程中的。中断只是触发线程调度的一种方式。
:
: 以串口中断为例,串口中断里通过信号量等方式将对应的线程状态转换成可执行态。中断结束后会触发一次线程调度。只要串口线程优先级够高就一定会被立刻调度为运行态。这个线程调度是和tick无关的。
:
#发自zSMTH@LYA-AL00
--
FROM 223.104.82.*