优先级和时间片是线程的两个重要参数,分别描述线程竞争处理器资源的能力和持有处理器时间长短的能力。 RT-Thread支持256个优先级。数值越小,优先级越高。0为最高优先级,最低优先级预留给空闲线程。用户可以通过rt_config.h中的RT_THREAD_PRIORITY_MAX宏来修改最大支持的优先级。针对STM32默认设置最大支持32个优先...
RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除,如图 4-2 所示,每个线程都有重要的属性,如线程...
rt_thread_resume(), rt_sem_release() 等函数使得挂起状态的线程返回到就绪状态。 rt_thread_delete/detach() 函数将挂起状态的线程更改为关闭状态。 rt_thread_exit(),处于运行状态的线程,运行结束,在线程的最后部分调用此函数,将状态更改为关闭状态。 线程控制块 在RT-Thread 中,线程控制块由结构体 struct r...
让出资源:rt_thread_yield 函数使当前线程让出 CPU 资源,相同优先级的其他线程将被执行。 睡眠:rt_thread_sleep 、 rt_thread_delay 和 rt_thread_mdelay 等函数可使当前线程挂起指定时间,时间结束后线程重新进入就绪状态。 挂起和恢复:rt_thread_suspend 函数挂起线程, rt_thread_resume 函数恢复被挂起的线程。
» 12. 支持时间片 12. 支持时间片在RT-Thread中,当同一个优先级下有两个或两个以上线程的时候,线程支持时间片功能,即我们可以指定线程持续运行一次的时间,单位为tick。假如有两个线程分别为线程2和线程3,他们的优先级都为3,线程2的时间片为2,线程3的时间片为3。当执行到优先级为3的线程时,会先执行线程...
在单核系统中,只有 rt_thread_self()函数返回的线程处于运行状态;在多核系统中,可能就不止这一个线程处于运行状态。此状态在RT-Thread 中的宏定义为RT_THREAD_RUNNING。 (4)挂起状态:也称阻塞态。它可能因为资源不可用而挂起等待,或线程主动延时一段时间而挂起。在挂起状态下,线程不参与调度。此状态在RT-Thread...
thread2is running,thread2count= 55 thread2is running,thread2count= 60 由运行的计数结果可以看出,线程2的运行时间是线程1的一半。 当把时间片的时间设置为0时,线程就是一直暂用直到大于205退出。 当把时间片设置为0时,应该是不启用时间片,这个手册中没有说明,蛮试下。
在上一节创建线程的时候最后一个参数是时间节拍数,比如设置为50,那么线程的时间片就是50ms。 另外,rtconfig.h中有 RT-Thread 内核配置,线程通讯配置,组件配置,shell配置,设备驱动配置等等的宏定义配置。 RT_TICK_PER_SECOND是可以修改的,比如我们修改成100。时钟节拍就是10ms。
首先定义一个线程控制块指针(线程句柄),然后调用rt_thread_create()函数创建线程。 此线程的名字为“thread_test”;线程入口函数thread_entry;入口函数的参数为RT_NULL,无入口参数;线程栈的大小为 512 字节;线程优先级为 10;线程时间片为 5。 2. 静态创建线程 ...