任务之间进行任务的切换除了使用延时函数挂起还有什么函数
问题如题 这么多问号也没吧问题描述清楚。 问题就是在每个任务结束之后就应该进行任务切换,我想知道除了用延时函数挂起之外还能怎么样进行切换。。 貌似还有信号量等等 描述还是不清楚任务有结束态吗?
如果你是想挂起任务,可以让任务在信号量、消息队列、邮箱等阻塞 回复【4楼】richey07
-----------------------------------------------------------------------
我想知道在任务执行过程中可以通过调用什么函数来进行任务的切换。 我刚学UCOS两天,感觉UCOS的任务调度都是附着在一些API里的,比如中断结束时会进行一次调度,释放信号量时会进行一次调度。
所以对于UCOS的任务而言,由于任务本身是无限循环的,要进行任务切换则必须将其阻塞,比如等待邮箱消息,否则在高优先级任务在附着在中断、时钟tick等事件里的任务调度运作并解除阻塞之前,当前任务会一直执行下去,而低优先级的任务就根本没机会了。毕竟内核不是并行的在执行的,它需要机会来进行任务调度。 uC/OS中队用户的API函数有:
延时
OSTimeDly,OSTimeDlyHMSM
任务挂起,恢复
OSTaskSuspend,OSTaskResume,OSTaskChangePrio,OSTaskCreat
中断返回
OSExtInt
信号量挂起,恢复
OSSemPend,OSSemPost,OSSemDel
互斥信号量挂起,恢复
OSMutexPend,OSMutexPost,OSMutexDel
时间标志组挂起,恢复
OSFlagPend,OSFlagPost,OSFlagDel
邮箱挂起,恢复
OSMboxPend,OSMboxPost,OSMboxDel
消息队列
OSQPend,OSQPost,OSQDel
其他的有些记不起了,但是这些函数并不是一定会任务,只能说是有条件就回切换
页:
[1]