难道ready状态就是通常意义上的running状态?
有个ready态,所有ready的任务按照优先级运行
那这么说,不是所有的ready状态都在running,怎么知道哪些task在running?
这没有意义呀,可能每一个任务就运行几个ms,你如何看?
当用shell查询任务状态时,当前运行的任务是shell. ready的任务就绪排队
jeans2000:解释准确。
但是shell任务也是READY。晕。
查看了taskInfo函数的源代码,ready就是running态
这个问题我曾经也想问,但是都来自己做工程后,就自然明白了,
用windview看,tornado自带工具就有
可以看到ready,也可以看到running状态
running是正在运行的任务,某一个时刻只可能是一个任务会是running状态,其它的就绪任务都是ready状态。
当你查看系统中任务状态的时候,总要运行一个查看的程序,这个查看点的时刻CPU就被这个查看程序占用了,本来在running的任务就变成ready状态了,所以你看到那些任务总是ready状态。
也就是查询系统中任务状态的时刻,只有你这个查询的程序所在任务才是running的。
你要查看正在running的任务,可以通过taskIdSelf获取,参看注释
/*******************************************************************************
*
* taskIdSelf - get the task ID of a running task
*
* This routine gets the task ID of the calling task. The task ID will be
* invalid if called at interrupt level.
*
* RETURNS: The task ID of the calling task.
*/