通过MiCO RTOS线程控制API可以在系统中定义,创建,控制和销毁线程。
- 线程的优先级分为10级,从0-9,级数越低,优先级越高。
- 高优先级的线程可以抢占低优先级线程,如果高优先级线程不能挂起,会导致低优先级的线程无法得到时间去运行。
- 相同优先级的各个线程通过时间片轮转的方式分时运行,使得这些线程看起来是同时运行的。
在MiCO系统初始化时,会创建一个以函数int application_start(void)为主执行体的线程,该线程的优先级是 7(MICO_APPLICATION_PRIORITY)。
一个线程可以处于以下几种状态:
- RUNNING,运行: 线程正在运行中,在同一个时间,MiCO RTOS中之可能有一个线程处于运行状态。
- Ready,就绪: 线程已经就绪并且等待运行。一旦当前的运行线程被终止,或者挂起,所有就绪的线程中优先级最高的线程将会变成运行状态。
- Suspend,挂起: 线程正在等待事件(一段时间,信号量,互斥锁,消息队列)发生后,转换成就绪状态。
- Terminate,终止: 线程处于非活动状态,在MiCO系统的IDLE线程中,所有的非活动状态的线程所拥有的私有资源将会被自动销毁。
-
共享资源(如通过malloc创建的内存区块)需要通过人工进行销毁。
API Description
mico_rtos_create_thread | 创建并开始一个新的线程 |
mico_rtos_delete_thread | 删除一个线程,将该线程置于终止状态 |
mico_rtos_suspend_thread | 挂起一个线程 |
mico_rtos_suspend_all_thread | 始终执行当前线程,并中断OS调度 |
mico_rtos_resume_all_thread | 恢复OS调度 |
mico_rtos_thread_join | 使当前线程挂起,直到另一个线程终止 |
mico_rtos_thread_force_awake | 强制唤醒一个挂起的线程 |
mico_rtos_is_current_thread | 查询一个线程是否是当前正在运行的线程 |
mico_thread_sleep | 使一个线程挂起一段时间,时间单位是:秒 |
mico_thread_msleep | 使一个线程挂起一段时间,时间单位是:毫秒 |