英亚体育娱乐
博主先容y6英亚体育娱乐
RT-Thread线程处理和调养
系统线程
舒坦线程
干线程
线程处理
RT-Thread自动运行化机制
在新线程死字LED
点击平直贵寓领取
博主先容
作家主页:苏州形势大白
作家简介:CSDN人工智能域优质创作家磊,苏州市凯捷智能科技有限公司首创之一,现在合营公司富士康、歌尔等几家新动力公司
淌若著作对你有匡助,迎接海涵、点赞、储藏(一键三连)和C#、Halcon、python+opencv、VUE、各大公司口试等一些订阅专栏哦
有任何问题迎接私信,看到会实时复兴
今年的三星GalaxyS22Ultra,品质及用户体验大家都可以感受到,非常沉稳的造型。深受用户欢迎。为了稳定手机市场,三星将继续发力,三星GalaxyS23Ultra将带来不一样的使用体验。三星的创新能力值得称赞,不少新技术都已经量产,如折叠屏手机、双曲面屏幕、动态刷新率屏幕等等。此次三星GalaxyS23Ultra又将带来许多新技术,无愧于王者机皇的称号。
朝鲜虽然有人使用智能手机,但智能手机普及程度远不及我们。在朝鲜平壤,时而能见到玩手机的时髦女郎,也能见到西装革履的男士拿着智能手机。还有不少年长的老人,拿着带有按键功能老式手机,这种手机屏幕两三寸大,只能用来打电话或发短信。朝鲜使用手机的群体,主要集中在大城市。
RT-Thread线程处理和调养
RT-Thread线程处理的主邀功能是对线程进行处理和调养,系统中统共存在两类线程,鉴别是系统线程和用户线程,系统线程是由RT-Thread内核创建的线程,用户线程是由诈欺形势创建的线程,这两类线程都会从内查对象容器等分拨线程对象,当线程被删除时,也会被从对象容器中删除,如下方图所示,每个线程都有遑急的属性,如线程死字块、线程栈、进口函数等。
RT-Thread的线程调养器是霸占式的,主要的使命等于从就绪线程列表中查找最高优先级线程,保证最高优先级的线程粗略被运行,最高优先级的任务一朝就绪,总能得到CPU的使用权。
当调养器调养线程切换时,先将现时列程凹凸文保存起来,当再切回到这个线程时,线程调养器将该线程的凹凸文信息收复。
线程通过调用函数rt_thread_create/init干预到运办事态(RT_THREAD_INIT);运办事态的线程通过调用函数rt_thread_startup干预到就绪现象(RT_THREAD_READY);就绪现象的线程被调养器调养后干预运办事态(RT_THREAD_RUNNING);当处于运办事态的线程调用rt_thread_delay,rt_sem_take,rt_mutex_take,rt_mb_recv等函数或者获取不到资源时,将干预到挂起现象(RT_THREAD_SUSPEND);处于挂起现象的线程,淌若恭候超时已经未能取得资源或由于其他线程开释了资源,那么它将复返到就绪现象。挂起现象的线程,淌若调用rt_thread_delete/detach函数,将改换为关闭现象(RT_THREAD_CLOSE);而运办事态的线程,淌若运行杀青,就会在线程的终末部分现实rt_thread_exit函数,将现象改换为关闭现象。
系统线程
系统线程是指由系统创建的线程,用户线程是由用户形势调用线程处理接口创建的线程,在RT-Thread内核中的系统线程有舒坦线程和干线程。
msh>list_threadthreadpristatusspstacksizemaxusedlefttickerror---------------------------------------------------------tshell20running0x000000840x0000100012%0x00000004000tidle031ready0x000000440x0000010034%0x0000000a000
舒坦线程
舒坦线程是系统创建的最低优先级的线程,线程现象永久为就绪态。当系统中无其他就绪线程存在时,调养器将调养到舒坦线程,它频繁是一个死轮回,且永久不可被挂起。另外,舒坦线程在RT-Thread也有着它的颠倒用途:
若某线程运行完了,系统将自动删除线程:自动现实rt_thread_exit函数,先将该线程从系统就绪部队中删除,再将该线程的现象改换为关闭现象,不再参与系统调养,然后挂入rt_thread_defunct僵尸部队(资源未回收、处于关闭现象的线程部队)中,终末舒坦线程会回收被删除线程的资源。
舒坦线程也提供了接口来运行用户修复的钩子函数,在舒坦线程运行时会调用该钩子函数,相宜钩入功耗处理、看门狗喂狗等使命。
干线程
在系统启动时,系统会创建main线程,它的进口函数为main_thread_entry,用户的诈欺进口函数main等于从这里信得过首先的,系统调养器启动后,main线程就首先运行,经过如下图,用户不错在main函数里添加我方的诈欺形势运行化代码。
int$Sub$$main(void){rtthread_startup;return0;}
系统启动后先从汇编代码startup_stm32l475xx.s首先运行,然后跳转到C代码现实该代码$Sub$$main.在rthtread_starup中现实了一些启动运行化使命:
intrtthread_startup(void){rt_hw_interrupt_disable;/*板级运行化:需在该函数里面进行系统堆的运行化*/rt_hw_board_init;/*打印RT-Thread版块信息*/rt_show_version;/*定时器运行化*/rt_system_timer_init;/*调养器运行化*/rt_system_scheduler_init;#ifdefRT_USING_SIGNALS/*信号运行化*/rt_system_signal_init;#endif/*由此创建一个用户main线程*/rt_application_init;/*定时器线程运行化*/rt_system_timer_thread_init;/*舒坦线程运行化*/rt_thread_idle_init;/*启动调养器*/rt_system_scheduler_start;/*不会现实至此*/return0;}
这部分启动代码,简洁不错分为四个部分:
1、运行化与系统有关的硬件;
2、运行化系统内查对象,举例定时器、调养器、信号;
3、创建main线程,在main线程中对种种模块步骤进交运行化;
4、运行化定时器线程、舒坦线程,并启动调养器。
在rt_application_init函数创建了干线程。
/*thesystemmainthread*/voidmain_thread_entry(void*parameter){externintmain(void);externint$Super$$main(void);#ifdefRT_USING_COMPONENTS_INIT/*RT-Threadcomponentsinitialization*/rt_components_init;#endif#ifdefRT_USING_SMPrt_hw_secondary_cpu_up;#endif/*invokesystemmainfunction*/#ifdefined(__CC_ARM)y6英亚体育娱乐