【 在 Oriphia 的大作中提到: 】
: xsemaphoretake怎么可能是马上执行的?等待信号量的时候是block状态,任务就会移到delaylist里面,delaylist就是按tick来延时的,pdtrue和pdfalse的转换怎么可能是即时的?
:
: #发自zSMTH@LYA-AL00
看明白了,你是真不懂....
semtake(..., forever)就会放到pending队列里了。
串口中断服务程序执行一个semGive,然后系统中断退出的时候再执行个reschedule,任务优先级最高的话,立马就会被执行,和tick没有一点关系。这也是rtos的一个核心要义,而不是啥都靠系统tick来做状态转换和调度。
嵌入式/rtos的面试内容可能就包括这个问题:线程/任务调度的时机都有哪些?
看样子这个帖子里没1,2个人能完全回答正确。
--
修改:beanspower FROM 123.123.253.*
FROM 123.123.253.*