线程让出实验【RT-Thread学习笔记 4】
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】相关推荐
- 线程优先级抢占实验【RT-Thread学习笔记 3】
同时处于就绪状态的线程,优先级高的先执行. 高优先级就绪时,低优先级任务让出CPU,让高优先级任务先执行. 创建两个任务函数: //线程优先级抢占 void thread1_entry(void *p ...
- java中线程总结_java中多线程学习笔记总结
线程的简单学习笔记: 1.进程与线程的概念 进程:从用户角度看进程是应用程序的一个执行过程. 从操作系统核心角度看进程代表的是操作系统分配的内存和CPU时间片等资源的基本单位,是为正在运行的程序提供的 ...
- java线程集合点_Java多线程学习笔记(三) 甚欢篇
使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...
- c语言线性表顺序存储实验小结,数据结构学习笔记-线性表顺序存储(C语言实现)...
写了一天,终于将线性表的顺序存储实现了,顺便恶补了一下指针内容.顺序存储,适合做查询,链式存储适合做增删. 添加方法主要就是将线性表从后往前遍历,依次往后挪一位,直到空出想要插入的位置,删除方法就是将 ...
- 丰迈实验工坊学习笔记——5G系统组成与架构演进分析
5G系统组成与架构演进分析 一.基础知识了解 二. 网元功能 三.架构设计 一.基础知识了解 DU:全称为Distributed Unit,意思是分布单元. CU:全称为Centralized Uni ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- Cuda学习笔记(一)——sm流处理器簇对blocks的调度策略
由于GPU目前在各行各业的广泛应用,无论是深度学习.大数据.云计算等都离不开GPU的并行加速,前阵子自学了Cuda-c编程,希望将来的研究工作能够用得上. Cuda系列总共有4篇,这里主要用于记录本人 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
最新文章
- JAVA 设计模式 享元模式
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
- VS.NET 2005 SP1 安装注意
- SQL 语句快速参考
- SpringBoot 自定义Banner
- 图片优化_网站里的图片应该如何优化
- python只能对列表进行切片_Python中的列表
- Windows 7 切换Python版本
- java tcp ack_TCP三次握手和四次挥手以及11种状态
- 解决KMPlayer 播放RMVB 一直是快进的问题
- 接口jdk1.8与jdk1.9新特性
- 打造IE6的position:fixed整理篇
- VUE父组件与子组件的数据传递
- ROC曲线及AUC值
- vue 一个公式 编辑器 组件
- pythonflag=false_python学习:跳出while循环的用法 exit_flag = False while not exit_flag:
- linux系统转移到另一个硬盘,(扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘...
- 搭建CTF-AWD训练平台
- 网站要怎么样进行站外优化才会提升关键词排名?
- 关于微信公众号开发时获取用户昵称作为参数乱码的问题
热门文章
- leetcode76 最小覆盖子串
- Redis:03---Redis的启动与配置参数大全
- PaperNotes(12)-Autoregressive Quantile networks for generative modeling
- 推荐算法--推荐系统冷启动问题(03)
- linux6.0 安装教程,CentOS 6.0安装步骤
- 基于Mac环境搭建以太坊私有区块链进行挖矿模拟
- Ubuntu 12.10 正式发布
- 程序员编程需要多少个小时?
- Docker 方式安装 gitlab ( 阿里云ECS )
- 解决:-bash: unzip: command not found (Linux 中 unZip/Zip 的安装及使用)