此帖出自嵌入式系统论坛
最新回复
问题1:在信号量或者消息队列建立时,有一个参数是可以设置“阻塞任务队列排序方式”的,一般有“先进先出”和“基于优先级”两种,不过后者增加了排序的开销。
问题2:taskDelay(n)表示当前任务放弃CPU,在第n个ticks到来时重新申请CPU。下面具体分析:
一般来说,任务获取CPU是按照“时间片”来获取的,比如时间片为20ticks,那么一旦一个任务获得了CPU,就会使用完这20个ticks,除非当前任务自己放弃CPU,比如taskDelay()。如果调用taskDelay(0),那么当前任务放弃CPU,系统调度将该任务放入就绪的任务队列(是按照优先级的高低),如果该任务仍然是最高优先级的就绪任务,那么立刻会被再次分配CPU,不过这一次调度也是有开销的。
关于任务调度的问题,可以看一下相关的资料。
另外,taskDelay()中的参数ticks是系统来维护的,就算任务一直未被调度,ticks也是被计算的。
详情
回复
发表于 2009-3-20 13:08
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持