1.同优先级的任务时交替执行
2.在默认的调度机制下,高优先级的任务先执行。如果高优先级的任务没有主动放弃执行的话,其他低优先级的任务得不到执行。
3.使用同一个任务函数,可以创建多个多个任务。每个任务都有自己的栈空间,所以每个任务可以相互不影响。
4.
4.1)阻塞状态(Blocked):等待某一件事情发生
母亲在电脑前跟同事沟通时,如果同事一直没回复,那么母亲的工作就被卡住了、被堵住了、处于阻塞状态(Blocked)。重点在于:母亲在等待。
1)时间相关的事件
可以等待一段时间:我等2分钟
也可以一直等待,直到某个绝对时间:我等到下午3点
2)同步事件:这事件由别的任务,或者是中断程序产生
例子1:任务A等待任务B给它发送数据
例子2:任务A等待用户按下按键
同步事件的来源有很多(这些概念在后面会细讲):
队列(queue)
二进制信号量(binary semaphores)
计数信号量(counting semaphores)
互斥量(mutexes)
递归互斥量、递归锁(recursive mutexes)
事件组(event groups)
任务通知(task notifications)
4.2)暂停状态(Suspended):存粹的休息
在日常生活的例子中,母亲正在电脑前跟同事沟通,母亲可以暂停:
好烦啊,我暂停一会
领导说:你暂停一下
要退出暂停状态,只能由别人来操作:
别的任务调用:vTaskResume
中断程序调用:xTaskResumeFromISR
4.3)就绪状态(Ready)
这个任务完全准备好了,随时可以运行:只是还轮不到它。这时,它就处于就绪态(Ready)。
5.同步与互斥的概念
在团队活动里,同事A先写完报表,经理B才能拿去向领导汇报。经理B必须等同事A完
成报表,AB之间有依赖,B必须放慢脚步,被称为同步。在团队活动中,同事A已经使用会议室了,经
理B也想使用,即使经理B是领导,他也得等着,这就叫互斥。