实验二 线程的使用

本文通过实验介绍RT-Thread中线程的动态和静态创建,以及优先级控制原理。通过thread1和thread2的实例,演示了线程状态的变迁和抢占。还包含了编码实践,如静态创建高优先级线程和观察任务控制块结构等。
摘要由CSDN通过智能技术生成

一、实验目的

  1. 理解线程创建、初始化与自动脱离的基本原理;
  2. 理解高优先级线程抢占低优先级线程运行;
  3. 掌握 RT-Thread  中线程的动态创建、静态初始化;
  4. 在 RT-Thread  中熟练使用线程来完成需求。
二、实验内容

本实验使用的例程为:thread_sample.c

为了体现线程的创建、初始化与脱离,本实验设计了 thread1、thread2 两个线程。thread1 是创建的动态线程,优先级为 25;Thread2  初始化的静态线程,优先级为 24。

优先级较高的 Thread2 抢占低优先级的 thread1,执行完毕一段程序后自动被系统脱离。优先级较低的 thread1 被设计成死循环,循环中有让出 CPU 使用权的动作–使用了 delay 函数。该线程在 thread2 退出运行之后开始运行,每隔一段时间运行一次,并一直循环运行下去。

通过本实验,用户可以清晰地了解到线程在本实验中的状态变迁情况。实验运行过程:

  1. 在 tshell 线程 (优先级 20) 中创建线程 thread1 和初始化 thread2,thread1

优先级为 25,thread2 优先级为 24;

2.启动线程 thread1 和 thread2,使 thread1 和 thread2 处于就绪状态;

    3.随后 tshell 线程挂起,在操作系统的调度下,优先级较高的 thread2  首先被投入运行;

     4.thread2 是可执行完毕线程,运行完毕打印之后,系统自动删除 thread2;

     5.thread1 得以运行,打印信息之后执行延时将自己挂起;

      6.系统中没有优先级更高的就绪队列,开始执行空闲线程;

       7.延时时间到,执行 thread1;

(8)循环(5)~(7)。

三、编码和思考题
  1. 静态创建一个线程 Thread_Flag3,优先级高于任务 1,实现一个周期方波, 周期为 10 个 OS Ticks。在报告中给出相关的核心代码、仿真截图和说明。
  2. 在任务 1 和 2 内添加代码,并在仿真中设置虚拟逻辑分析仪,在报告中给出截图和说明。

     3.在 watch 中添加并观察 3 个任务的控制块结构体中的关键成员,并在报告中给出截图和分析。

     4.在合适位置设置断点,观察任务 3 状态在就绪、运行和挂起之间的转换,在报告中给出截图和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sftmnggsujgff.shhgft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值