码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • zephyr线程生命周期


    ephyr中线程是使用CPU的最小单位,线程从创建后由zephyr内核进行调度,根据运行和等待资源的状况在几个状态中切换,直到线程终止退出生命周期。

    线程状态

    线程在其生命周期中有下面6种状态:

    • New 创建:线程被创建起来但还没有运行,thread_state对应_THREAD_PRESTART

    • Ready 就绪:线程处于就绪状态,等待被调度执行,thread_state对应_THREAD_QUEUED

    • Running 运行:线程占用CPU运行中,thread_state为0

    • Waiting 等待:线程等待IO或者内核事件,thread_state对应_THREAD_PENDING

    • Suspended 挂起:线程被挂起,thread_state对应_THREAD_QUEUED

    • Terminated 终止:线程终止退出生命周期,thread_state对应_THREAD_QUEUED
      在实现中线程的状态记录在struct k_thread的base.thread_state中,线程的状态定义在kernel_structs.h中

    状态转换

    Zephyr线程的6种状态的转换图如下


    从状态转换图可以看到一共有8种动作会引起Thread的状态转换,说明如下:

    • create 创建一个线程,创建线程时会指定一个延时,线程将在延时之后执行,由下面行为引起:
      k_thread_create

    • start 开始执行一个线程,由下面行为引起:
      k_thread_start
      创建线程指定的delay时间到

    • dispatch 线程被调度执行,由下面行为引起:
      引发调度时,例如正在运行的线程时间片用完或者等待IO,或者是高优先级线程等待资源结束抢占当前线程

    • interrupt 当前线程被中断,由下面行为引起:
      引发调度时,例如当前运行的线程时间片用完,或者被高优先级线程抢占CPU

    • IO or Event wait,等待事件,由下面行为引起:
      等待mutex,sem,mailbox,msg等内核对象时

    • suppend 线程被挂起,由下面行为引起:
      k_thread_suspend,被其它thread suspend
      k_sleep,自己进入睡眠

    • resume 恢复挂起线程,由下面行为引起:
      k_thread_resume
      k_wakeup
      k_sleep的时间到了

    • abort 中止线程,由下面行为引起:
      k_thread_abort 中止掉指定线程
      线程函数返回

       

  • 相关阅读:
    用hutool中的aes解密对微信小程序加密数据解密
    如何在 Spartacus 使用 UserAccountFacade 在语言设置更改后重新读取用户数据
    【升级U8+】子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
    MAIR_ELX总结
    docker- harbor私有仓库部署与管理
    Excel 导出打不开
    如何将两个pdf合并成一个?pdf合并技巧分享
    区块链隐私计算中的密码学原理及应用(1)
    LangChain结合LLM做私有化文档搜索
    基于微信小程序的土地租赁的设计与实现
  • 原文地址:https://blog.csdn.net/lbaihao/article/details/126920073
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号