博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程让出实验【RT-Thread学习笔记 4】
阅读量:6714 次
发布时间:2019-06-25

本文共 1168 字,大约阅读时间需要 3 分钟。

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

……..

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

转载地址:http://tikmo.baihongyu.com/

你可能感兴趣的文章
AccessibilityService
查看>>
麦当劳数字化转型中获得的6个数据科学经验
查看>>
react反模式之index作为key
查看>>
如何撰写好文档?精益文档的六个实践
查看>>
专访朱诗雄:Apache Spark中的全新流式引擎Structured Streaming
查看>>
移动端DNUN:危险通知和用户导航
查看>>
举重若轻的人人车移动端数据平台
查看>>
麻省理工学院研究人员设计出针对幽灵党和熔毁的DAWG方法
查看>>
自由软件救世主Richard Stallman:我们可以比比特币做得更好
查看>>
AlphaZero进化论:从零开始,制霸所有棋类游戏
查看>>
百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
查看>>
Prometheus正式从CNCF毕业
查看>>
专访《更敏捷的测试》作者Janet Gregory和Lisa Crispin
查看>>
伯克利论断:Serverless 才是云时代的主宰
查看>>
理解BERT Transformer:Attention is not all you need!
查看>>
PHP实现博客Ping功能源码分享
查看>>
端到端的超媒体REST API设计
查看>>
Microsoft的现代数据管理
查看>>
AI如何帮助亚马逊达成市值万亿美元成就?
查看>>
马化腾演讲、张勇内部讲话暴露两大巨头云上端倪
查看>>