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();}
}

启动他们:

//线程让出实验,两个线程优先级一样。否则在给一次调度机会也是高优先级的任务使用MCUtid2 = 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学习笔记 4】相关推荐

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

    同时处于就绪状态的线程,优先级高的先执行. 高优先级就绪时,低优先级任务让出CPU,让高优先级任务先执行. 创建两个任务函数: //线程优先级抢占 void thread1_entry(void *p ...

  2. java中线程总结_java中多线程学习笔记总结

    线程的简单学习笔记: 1.进程与线程的概念 进程:从用户角度看进程是应用程序的一个执行过程. 从操作系统核心角度看进程代表的是操作系统分配的内存和CPU时间片等资源的基本单位,是为正在运行的程序提供的 ...

  3. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  4. c语言线性表顺序存储实验小结,数据结构学习笔记-线性表顺序存储(C语言实现)...

    写了一天,终于将线性表的顺序存储实现了,顺便恶补了一下指针内容.顺序存储,适合做查询,链式存储适合做增删. 添加方法主要就是将线性表从后往前遍历,依次往后挪一位,直到空出想要插入的位置,删除方法就是将 ...

  5. 丰迈实验工坊学习笔记——5G系统组成与架构演进分析

    5G系统组成与架构演进分析 一.基础知识了解 二. 网元功能 三.架构设计 一.基础知识了解 DU:全称为Distributed Unit,意思是分布单元. CU:全称为Centralized Uni ...

  6. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  7. Cuda学习笔记(一)——sm流处理器簇对blocks的调度策略

    由于GPU目前在各行各业的广泛应用,无论是深度学习.大数据.云计算等都离不开GPU的并行加速,前阵子自学了Cuda-c编程,希望将来的研究工作能够用得上. Cuda系列总共有4篇,这里主要用于记录本人 ...

  8. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  9. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

最新文章

  1. JAVA 设计模式 享元模式
  2. Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
  3. VS.NET 2005 SP1 安装注意
  4. SQL 语句快速参考
  5. SpringBoot 自定义Banner
  6. 图片优化_网站里的图片应该如何优化
  7. python只能对列表进行切片_Python中的列表
  8. Windows 7 切换Python版本
  9. java tcp ack_TCP三次握手和四次挥手以及11种状态
  10. 解决KMPlayer 播放RMVB 一直是快进的问题
  11. 接口jdk1.8与jdk1.9新特性
  12. 打造IE6的position:fixed整理篇
  13. VUE父组件与子组件的数据传递
  14. ROC曲线及AUC值
  15. vue 一个公式 编辑器 组件
  16. pythonflag=false_python学习:跳出while循环的用法 exit_flag = False while not exit_flag:
  17. linux系统转移到另一个硬盘,(扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘...
  18. 搭建CTF-AWD训练平台
  19. 网站要怎么样进行站外优化才会提升关键词排名?
  20. 关于微信公众号开发时获取用户昵称作为参数乱码的问题

热门文章

  1. leetcode76 最小覆盖子串
  2. Redis:03---Redis的启动与配置参数大全
  3. PaperNotes(12)-Autoregressive Quantile networks for generative modeling
  4. 推荐算法--推荐系统冷启动问题(03)
  5. linux6.0 安装教程,CentOS 6.0安装步骤
  6. 基于Mac环境搭建以太坊私有区块链进行挖矿模拟
  7. Ubuntu 12.10 正式发布
  8. 程序员编程需要多少个小时?
  9. Docker 方式安装 gitlab ( 阿里云ECS )
  10. 解决:-bash: unzip: command not found (Linux 中 unZip/Zip 的安装及使用)