线程让出实验【RT-Thread学习笔记 4】

转载 2016年01月23日 22:05:17

API: rt_thread_yield

线程函数中调用,本线程释放MCU。如果此时有别的相同优先级的任务整处于等待状态,将获得MCU使用权。

线程让出就是给OS增加一个任务调度的机会。

创建两个线程,观察他们的结果:

复制代码
//线程让出试验
void yield_test1(void* parameter)
{
    rt_uint32_t count = 0;
    while(1)
    {
        rt_kprintf("thread test1 count:%d\n",count++);
        rt_thread_yield();
    }
}
void yield_test2(void* parameter)
{
    rt_uint32_t count = 0;
    while(1)
    {
        rt_kprintf("thread test2 count:%d\n",count++);
        rt_thread_yield();
    }
}
复制代码

启动他们:

复制代码
//线程让出实验,两个线程优先级一样。否则在给一次调度机会也是高优先级的任务使用MCU
    tid2 = rt_thread_create("yield1",yield_test1,RT_NULL,2048,10,5);
    if(tid2 != RT_NULL)
        rt_thread_startup(tid2);
    tid2 = rt_thread_create("yield2",yield_test2,RT_NULL,2048,10,5);
    if(tid2 != RT_NULL)
        rt_thread_startup(tid2);
复制代码
 

看见两个线程轮流输出:

\ | /

- RT - Thread Operating System

/ | \ 2.0.0 build Aug 29 2014

2006 - 2013 Copyright by rt-thread team

thread test1 count:0

thread test2 count:0

thread test1 count:1

thread test2 count:1

thread test1 count:2

thread test2 count:2

thread test1 count:3

thread test2 count:3

thread test1 count:4

thread test2 count:4

thread test1 count:5

thread test2 count:5

……..

如果没有线程让出的操作,情况将是等一个线程时间片结束之后,才会轮到另一个线程输出。不会是轮流输出了

RT-Thread操作系统之一线程总结

1--线程的创建与删除   线程的基本知识   组成 --------线程代码(函数),线程控制块、线程堆栈。   ·线程代码 /* static void thread1_entr...
  • liaoxu02
  • liaoxu02
  • 2014-05-26 21:12:56
  • 2014

基于stm32的RT-Thread操作系统+J-link V9虚拟串口调试操作

利用j-link的虚拟串口功能结合rt-thread操作系统的串口打印进程,实现代码和进程跟踪,将打印内容直接输出到编译器的debug窗口中...
  • qq_16455677
  • qq_16455677
  • 2017-12-08 13:37:08
  • 252

RT-Thread的线程(任务)处理【RT-Thread学习笔记 2】

RT-Thread中使用线程这个概念,而不是任务。两者相似,我在这里把他的线程当作任务来理解了 1、任务处理: 动态任务相关API 创建任务:rt_thread_create函数,创...
  • wangpengqi
  • wangpengqi
  • 2016-01-23 21:18:28
  • 1529

RT-Thread创始人熊谱翔: 我和Linux、嵌入式实时操作系统RT-Thread

本文转载至:http://www.rt-thread.org/dynamic/78.html 接触Linux 说起Linux应该从我在校园时期说起。我是在山城——重庆邮电学院念的书,1998...
  • robertsong2004
  • robertsong2004
  • 2016-02-06 19:38:21
  • 5222

RT-Thread初探

试验平台:正点原子探索者STM32F407开发板一、RT-Thread介绍RT-Thread是由国内开发者主导开发的一款开源嵌入式实时操作系统,它包含:操作系统内核、TCP/IP协议栈、文件系统、li...
  • mcgrady_tracy
  • mcgrady_tracy
  • 2018-02-01 16:55:53
  • 117

线程让出实验【RT-Thread学习笔记 4】

API: rt_thread_yield 线程函数中调用,本线程释放MCU。如果此时有别的相同优先级的任务整处于等待状态,将获得MCU使用权。 线程让出就是给OS增加一个任务调度的机会。 ...
  • wangpengqi
  • wangpengqi
  • 2016-01-23 22:05:17
  • 1164

RT-Thread 学习笔记(一)---系统节拍tick

基础知识,本人学习记录,仅供参考。   系统rt_tick大小定义在rtconfig.h中: /* Tick per Second */#define RT_TICK_PER_SECOND 100 默...
  • skawu
  • skawu
  • 2017-11-11 17:06:11
  • 146

【RT-Thread学习笔记 4】线程让出实验

API: rt_thread_yield 线程函数中调用,本线程释放MCU。如果此时有别的相同优先级的任务整处于等待状态,将获得MCU使用权。 线程让出就是给OS增加一个任务调度的机会。 ...
  • jxgxlm2008
  • jxgxlm2008
  • 2016-07-04 15:02:42
  • 301

线程优先级抢占实验【RT-Thread学习笔记 3】

同时处于就绪状态的线程,优先级高的先执行。 高优先级就绪时,低优先级任务让出CPU,让高优先级任务先执行。 创建两个任务函数: //线程优先级抢占 void thread1_en...
  • wangpengqi
  • wangpengqi
  • 2016-01-23 22:03:18
  • 993

RT_thread 学习笔记1——内核对象

RT-Thread的内核映像文件在编译时会形成如下图所示的结构(以AT91SAM7S64为例):其中主  要包括了这么几段:    Segment      Description   .text ...
  • ysdaniel
  • ysdaniel
  • 2011-07-30 15:47:43
  • 1940
收藏助手
不良信息举报
您举报文章:线程让出实验【RT-Thread学习笔记 4】
举报原因:
原因补充:

(最多只允许输入30个字)