RT Thread 辅助线程函数

获得当前线程

在程序运行中,相同的一段代码可能会被多个线程执行,在执行的时候可以通过 rt_thread_self(void) 函数获取当前执行的句柄。共同的代码被执行时确定当前占用这个线程的句柄。

让出处理资源

rt_thread_yield(void) 让出处理器资源,执行正确返回 RT_EOK。这个函数让当前的进程让出共同调用的资源,然后让调度器找出当前最高优先级的线程运行,当让出后,这个线程又会回到READY(就绪)状态。等待下次线程执行。

线程睡眠

让进程进入休眠
rt_thread_sleep(rt_tick_t tick) 按照时钟节拍数进行阻塞。休眠几个街拍
rt_thread_delay(rt_tick_t tick) 同上
rt_thread_mdelay(rt_int32_t ms) 设置线程阻塞时间,让线程阻塞时间按照毫秒阻塞

线程控制

  • This function will control thread behaviors according to control command.
    @param thread the specified thread to be controlled
    @param cmd the control command, which includes
    //RT THREAD CTRL CHANGE PRIORITY for changing priority level of thread;改变优先级*arg传入优先级
    //RT THREAD CTRL STARTUP for starting a thread; == rt_thread_startup().启动
### RT-Thread 中的线分配方法与机制 #### 线创建 在 RT-Thread 实时操作系统中,线作为最小执行单元,在系统启动初期由初始化序自动创建一些必要的后台处理线之外,应用序也可以通过 API 接口动态地创建新的工作线。为了创建一个新的线,可以使用 `rt_thread_create` 函数[^2]。 ```c struct rt_thread *thread; char thread_name[] = "example"; void example_entry(void *parameter); /* 创建一个新线 */ thread = rt_thread_create(thread_name, example_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (thread != RT_NULL) { /* 启动该线 */ rt_thread_startup(thread); } ``` 这段代码展示了如何定义并启动一个名为 `"example"` 的线实例。其中指定了入口函数 (`example_entry`)、栈大小 (`THREAD_STACK_SIZE`) 和优先级 (`THREAD_PRIORITY`) 参数用于配置新建线的行为特性。 #### 资源分配策略 当创建线时,除了指定其名称外,还需要提供初始堆栈空间大小以及设定好调度级别即优先权值。RT-Thread 使用固定优先级抢占式调度算法来决定当前哪个就绪态下的最高优先生效去占用 CPU 运行时间片资源;而每个线所拥有的具体内存区域则是在构建阶段预先划分好的静态存储区段或是从系统池里临时申请得到的一块连续地址区间[^1]。 对于那些频繁进出活动状态之间转换的任务来说,合理规划它们各自的缓冲容量至关重要——过小可能导致溢出错误从而引发不可预测的结果甚至崩溃现象发生;反之过大又会造成不必要的浪费影响整体性能表现。因此开发者应当依据实际需求谨慎评估各项参数取舍情况以达到最佳平衡效果。 #### 上下文切换钩子 值得注意的是,在整个系统的运行期间内会不断经历着线之间的快速交替过。如果希望监控这些变化或者在线切换前后执行某些特定操作的话,则可通过注册回调方式实现这一目标。例如: ```c static void on_switch(struct rt_thread *from, struct rt_thread *to) { // 自定义逻辑... } // 设置全局线切换通知处理器 rt_scheduler_sethook(on_switch); ``` 上述片段说明了怎样安装自定义的上下文迁移监听器以便于捕获每次发生的转移动作,并据此作出响应措施如日志记录等辅助功能开发[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值