Zephyr系列文章,翻译自 https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr

人肉翻译,英文水平有限,仅供参考。

本文目录:Zephyr API reference->kernel services ->system threads

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/zephyr/reference/kernel/threads/system_threads.html


system threads 系统线程

系统线程将会在系统初始化的时候由内核自动产生。

内核产生了下面的系统线程:

Main thread 主线程

此线程执行内核的初始化,然后调用应用的main函数。

默认的,主线程使用最高的可配置抢占线程优先级(即0)。如果内核没有配置为支持抢占线程,主线程将使用最低配置的合作线程优先级(即-1)。

主线程是必要的线程,因为它执行了内核的初始化,执行了应用程序的main函数;这说明如果这个线程被弃用,将会产生系统错误。如果main函数没有定义,或者它执行了后正常返回了,主线程正常终止,并不会返回错误。

Idle thread 空闲线程

当系统没有其它工作的时候,这个线程会被执行。如果可以,空闲现成启动板子上的电源管理来省电;否则空闲此案城简单的执行空循环。空闲线程同系统运行一起存在,并永远不会终止。

空闲线程永远使用最低配置的线程优先级。如果它是合作线程,空闲线程反复的让出CPU,当需要的时候让应用程序的其他线程运行。

空闲线程是必须的,这说明如果废弃它,将会产生致命的系统错误。

其他系统线程

其他系统此案城也会被创建,它们基于应用程序制定的内核和板子的配置。例如使能系统工作队列将产生一个系统线程,这个线程为提交给它的工作项服务。


Implementation 实现

Writing a main() function 写一个main函数

内核初始化完成后,应用程序提供的mian()正常执行。内核不传递任何参数给该函数。下面的代码概述了一个简单的mian()函数。这个函数可以根据需要的复杂情况被实际的应用使用。


Suggested uses 建议用法

使用主线程在只需要一个线程的应用程序中执行基本的线程处理,而不是定义一个附加的指定一个应用线程。


本节完。

 

发表评论