线程,thread,可能并不是一个具有固定定义的概念。抛开其他的OS不说,单纯从FreeRTOS的信息中看看thread究竟具有什么属性。

这里面有一部分关于thread的描述,其中描述到了单核MCU。在单核MCU上,某一时刻只能够有一个thread在执行。究竟是哪一个线程在执行,这取决于内核的管理。内核通过检查线程的优先级来决定究竟哪个线程该执行。而高优先级的线程会优先得到运行的机会,因此软件设计中的一个初步原则可能是:硬实时性需求的优先级高,软实时性的优先级低。但是实际的工程实践中,硬实时性以及软实时性肯定能不是一个优先级就可以解决的一个问题。

上面这段描述中可以看出,其实,在FreeRTOS的描述中,task以及thread其实是一回事儿。一般来说,描述中可能会用任务多于线程,因为其他领域中线程可能还有其他的含义。
关于任务。

FreeRTOS中的task就是C语言实现的函数,不同的是对其原型有要求。返回值必须为空,而且需要传入一个void类型指针。通常,是一个永不退出的无限循环。
如果一个task不需要继续执行了,必须显式地将其删除。一个task也可以去创建任意数目的task。而任务本身也有多种状态,运行、不运行算是最为粗旷的两类。而不运行其实还有好几种子状态。
以上算是从官方书籍中的提纲中提取出来的部分信息,算是对线程以及任务这个概念做一个最基础的了解。
















