ZEPHYR-内核服务-系统线程
Zephyr系列文章,翻译自 https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr
人肉翻译,英文水平有限,仅供参考。
本文目录:Zephyr API reference->kernel services ->system threads
system threads 系统线程
系统线程将会在系统初始化的时候由内核自动产生。
内核产生了下面的系统线程:
Main thread 主线程
此线程执行内核的初始化,然后调用应用的main函数。
默认的,主线程使用最高的可配置抢占线程优先级(即0)。如果内核没有配置为支持抢占线程,主线程将使用最低配置的合作线程优先级(即-1)。
主线程是必要的线程,因为它执行了内核的初始化,执行了应用程序的main函数;这说明如果这个线程被弃用,将会产生系统错误。如果main函数没有定义,或者它执行了后正常返回了,主线程正常终止,并不会返回错误。
Idle thread 空闲线程
当系统没有其它工作的时候,这个线程会被执行。如果可以,空闲现成启动板子上的电源管理来省电;否则空闲此案城简单的执行空循环。空闲线程同系统运行一起存在,并永远不会终止。
空闲线程永远使用最低配置的线程优先级。如果它是合作线程,空闲线程反复的让出CPU,当需要的时候让应用程序的其他线程运行。
空闲线程是必须的,这说明如果废弃它,将会产生致命的系统错误。
其他系统线程
其他系统此案城也会被创建,它们基于应用程序制定的内核和板子的配置。例如使能系统工作队列将产生一个系统线程,这个线程为提交给它的工作项服务。
Implementation 实现
Writing a main() function 写一个main函数
内核初始化完成后,应用程序提供的mian()正常执行。内核不传递任何参数给该函数。下面的代码概述了一个简单的mian()函数。这个函数可以根据需要的复杂情况被实际的应用使用。
Suggested uses 建议用法
使用主线程在只需要一个线程的应用程序中执行基本的线程处理,而不是定义一个附加的指定一个应用线程。
本节完。