系统线程

系统线程

   系统线程指的是在系统初始化期间有内核自动派生的线程

系统线程相关概念

   内核会派生出两个系统线程,它们分别是主线程和空闲线程

   主线程:

   这个线程在执行完内核初始化后调用应用程序的主函数mian()(如果定义了主函数)

   默认情况下,主线程是优先级最高的抢占式线程。如果内核配置为不支持抢占式线程,那么主线程会被配置为优先级最低的协作式线程

   主线程在执行内核初始化或调用应用程序的主函数main()时是一个至关重要的线程。这意味着如果线程被异步中止就出现了一个致命的系统错误,如果主函数main()没被定义,或者执行了主函数main()时在主函数mian()中正常返回了(同步的方式),那么主线程会以同步终止的方式结束,不会出现任何错误

   空闲线程:

   空闲线程会在系统没有其他工作执行时运行,如果可以的话可以在空闲线程中启动电源管理来节省功耗。否者的话空闲线程会一直做空循环操作。只要系统运行,那么空闲线程就会一直运行永远不会结束

   空闲线程总是被配置成优先级最低的线程。如果它是一个协作式线程,空闲线程会周期性的让出CPU,这样其他线程在需要的时候就可以运行了

   空闲线程也是至关重要的线程,所以在线程被异步中止时会出现一个致命的系统错误

   或许还会有其他的系统线程被派生出来,这是由应用程序指定的内核和板级配置选项决定的。例如,使能系统工作队列时将会派生出一个提交工作项服务的线程

系统线程的实现

写一个主函数功能

   一个应用程序会提供一个主函数main()功能在内核初始化完成后被调用。内核不会传任何参数给它

   下面的代码大概描述了主函数main()的功能。在真正应用时这个函数功能复杂度会根据需求变化而变化

void main(void)
{
    /* initialize a semaphore */
    ...

    /* register an ISR that gives the semaphore */
    ...

    /* monitor the semaphore forever */
    while (1) {
        /* wait for the semaphore to be given by the ISR */
        ...
        /* do whatever processing is now needed */
        ...
    }
}

推荐用法

   在应用程序中通过主线程执行只需要一个单一线程的处理,不需要应用程序指定额外的线程

配置选项

   相关的配置选项如下:

   CONFIG_MAIN_THREAD_PRIORITY

   CONFIG_MAIN_STACK_SIZE

   CONFIG_IDLE_STACK_SIZE

APIs

   无

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值