RT-Thread 读后感3 —— 实现就绪列表 (定义就绪列表,将线程插入到就绪列表)

xiaoxiao2025-10-20  10

1. 定义就绪列表

线程创建好后,需要将线程添加到就绪列表里面,表示线程已经就绪,系统随时可以调度。RT-Thread定义的就绪列表如下:

/* 线程就绪列表如下 ** RT_THREAD_PRIORITY_MAX 在rtconfig.h中默认定义为32 决定最大线程优先级 */ rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX];

2. 将线程插入到就绪列表

将线程插入到就绪列表就是通过线程控制块tlist这个节点插入到就绪列表来实现的。在初始化线程代码中添加 将线程插入到就绪列表的操作如下:

/* 初始化线程*/ rt_thread_init(&rt_flag1_thread, /* 线程控制块*/ flag1_thread_entry , /* 线程入口参数*/ RT_NULL, /* 线程形参*/ &rt_flag1_thread_stack[0], /* 线程栈起始地址*/ sizeof(rt_flag1_thread_stack)); /*线程栈大小,单位为字节*/ /* 将线程插入到就绪列表中 */ rt_list_insert_before(&(rt_thread_priority_table[0]),&(rt_flag1_thread.tlist)); rt_thread_init(&rt_flag2_thread, /* 线程控制块*/ flag2_thread_entry , /* 线程入口参数*/ RT_NULL, /* 线程形参*/ &rt_flag2_thread_stack[0], /* 线程栈起始地址*/ sizeof(rt_flag2_thread_stack)); /*线程栈大小,单位为字节*/ /* 将线程插入到就绪列表中 */ rt_list_insert_before(&(rt_thread_priority_table[1]),&(rt_flag2_thread.tlist));

就绪列表的下标对应的是线程的优先级,目前线程还不支持优先级,选择flag1 线程插入到就绪列表为0的链表中,选择flag2插入到就绪列表为1的链表中。

 

 

转载请注明原文地址: https://www.6miu.com/read-5038246.html

最新回复(0)