Niobe开发板:基于OpenHarmony操作系统进行多线程(多任务)开发

本文介绍了在OpenHarmony操作系统上基于Niobe开发板进行多线程开发的基本概念、线程状态及其迁移,并详细阐述了如何创建线程、编译、烧录及调试。内容涵盖线程状态、调度算法以及具体的开发实例,展示了如何在HarmonyOS内核中管理线程。
摘要由CSDN通过智能技术生成

线程的基本概念

从系统角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源,并独立于其它线程运行。

OpenHarmony LiteOS可以给用户提供多个线程,实现线程间的切换,帮助用户管理业务程序流程。具有如下特性:

  1. 支持多线程。
  2. 一个线程代表一个任务
  3. 抢占式调度机制,高优先级的线程可打断低优先级线程,低优先级线程必须在高优先级线程阻塞或结束后才能得到调度。
  4. 相同优先级线程支持时间片轮转调度方式。
  5. 共有32个优先级[0-31],最高优先级为0,最低优先级为31。用户进程可配置的优先级有22个 (10~31)。

 

1. 线程的状态

线程有多种运行状态。系统初始化完成后,创建的线程就可以在系统中竞争一定的资源,由内核进行调度。

线程状态通常分为以下四种:
就绪(Ready):该线程在就绪队列中,只等待CPU。
运行(Running):该线程正在执行。
阻塞(Blocked):该线程不在就绪队列中。包含线程被挂起(suspend状态)、线程被延时(delay状态)、线程正在等待信号量、读写队列或者等待事件等。
退出态(Dead):该线程运行结束,等待系统回收资源。

 

2. 线程状态迁移

就绪态→运行态: 任务创建后进入就绪态,发生任务切换时,就绪队列中最高优先级的任务被执行,从而进入运行态,同时该任务从就绪队列中移出。
运行态→阻塞态 :正在运行的任务发生阻塞(挂起、延时、读信号量等)时,将该任务插入到对应的阻塞队列中,任务状态由运行态变成阻塞态,然后发生任务切换,运行就绪队列中最高优先级任务。
阻塞态→就绪态(阻塞态→运行态):阻塞的任务被恢复后(任务恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的任务会被加入就绪队列,从而由阻塞态变成就绪态;此时如果被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,该任务由就绪态变成运行态。
就绪态→阻塞态 : 任务也有可能在就绪态时被阻塞(挂起),此时任务状态由就绪态变为阻塞态,该任务从就绪队列中删除,不会参

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值