线程
来自SylixOS-wiki
(版本间的差异)
Jiaojinxing (讨论 | 贡献) |
Jiaojinxing (讨论 | 贡献) (→线程) |
||
第4行: | 第4行: | ||
为了管理线程,SylixOS会为每一个线程分配一个线程控制块,用于记录该线程的信息,如线程入口函数、线程优化级、线程名字、线程当前的堆栈指针等。 | 为了管理线程,SylixOS会为每一个线程分配一个线程控制块,用于记录该线程的信息,如线程入口函数、线程优化级、线程名字、线程当前的堆栈指针等。 | ||
− | 线程入口函数可以调用其它函数,函数内定义的局部变量将从它自己的栈里分配,所以不同的线程可以有相同的线程入口函数,但又独立运行。 | + | :线程入口函数可以调用其它函数,函数内定义的局部变量将从它自己的栈里分配,所以不同的线程可以有相同的线程入口函数,但又独立运行。 |
− | 线程栈可以由用户自己分配,也可以操作系统代为分配,线程栈的大小不应改过少(容易造成栈溢出),也不应该过大(造成浪费)。 | + | :线程栈可以由用户自己分配,也可以操作系统代为分配,线程栈的大小不应改过少(容易造成栈溢出),也不应该过大(造成浪费)。 |
− | 线程ID在线程被创建时决定,是线程的标识符。 | + | :线程ID在线程被创建时决定,是线程的标识符。 |
− | 线程优先级和调度策略是SylixOS调度器进行任务调度的参数,SylixOS是一个实时操作系统(RTOS),始终运行一个优先级最高的就绪态任务。 | + | :线程优先级和调度策略是SylixOS调度器进行任务调度的参数,SylixOS是一个实时操作系统(RTOS),始终运行一个优先级最高的就绪态任务。 |
+ | |||
+ | ==线程的基本状态== | ||
+ | :线程的基本状态有如下几种: | ||
+ | |||
+ | :1. 初始化 创建线程过程中线程的状态 | ||
+ | :2. 就绪 线程可以运行的状态 | ||
+ | :3. 等待 线程需要等行某些事件而不能继续的状态 | ||
+ | :4. 僵死状态 线程退出后处理的状态 | ||
+ | |||
+ | ==线程优先级== | ||
+ | :线程优先级的范围处决于操作系统的配置,默认是0~255,0是最高优先级,255,是最低优先级: | ||
+ | |||
+ | #define LW_PRIO_HIGHEST 0 /* SylixOS 最高优先级 */ | ||
+ | #define LW_PRIO_LOWEST 255 /* SylixOS 最低优先级 */ | ||
+ | |||
+ | /********************************************************************************************************* | ||
+ | 优先级 (一般应用的最高优先级不能高于 LW_PRIO_CRITICAL 最低不能低过 LW_PRIO_LOW) | ||
+ | *********************************************************************************************************/ | ||
+ | |||
+ | #define LW_PRIO_EXTREME LW_PRIO_HIGHEST /* 最高优先级 */ | ||
+ | #define LW_PRIO_CRITICAL 50 /* 关键处理任务 */ | ||
+ | #define LW_PRIO_REALTIME 100 /* 实时处理任务 */ | ||
+ | #define LW_PRIO_HIGH 150 /* 高优先级任务 */ | ||
+ | #define LW_PRIO_NORMAL 200 /* 正常优先级 */ | ||
+ | #define LW_PRIO_LOW 250 /* 低优先级 */ | ||
+ | #define LW_PRIO_IDLE LW_PRIO_LOWEST /* 最低优先级 */ | ||
==线程入口函数== | ==线程入口函数== |
2015年5月28日 (四) 17:44的版本
目录 |
线程
- 线程是程序中的一条独立的控制流,线程是SylixOS调度器进行任务调度的基本单位,每个线程都有一个独一无二的ID号、栈、线程控制块(TCB),
为了管理线程,SylixOS会为每一个线程分配一个线程控制块,用于记录该线程的信息,如线程入口函数、线程优化级、线程名字、线程当前的堆栈指针等。
- 线程入口函数可以调用其它函数,函数内定义的局部变量将从它自己的栈里分配,所以不同的线程可以有相同的线程入口函数,但又独立运行。
- 线程栈可以由用户自己分配,也可以操作系统代为分配,线程栈的大小不应改过少(容易造成栈溢出),也不应该过大(造成浪费)。
- 线程ID在线程被创建时决定,是线程的标识符。
- 线程优先级和调度策略是SylixOS调度器进行任务调度的参数,SylixOS是一个实时操作系统(RTOS),始终运行一个优先级最高的就绪态任务。
线程的基本状态
- 线程的基本状态有如下几种:
- 1. 初始化 创建线程过程中线程的状态
- 2. 就绪 线程可以运行的状态
- 3. 等待 线程需要等行某些事件而不能继续的状态
- 4. 僵死状态 线程退出后处理的状态
线程优先级
- 线程优先级的范围处决于操作系统的配置,默认是0~255,0是最高优先级,255,是最低优先级:
#define LW_PRIO_HIGHEST 0 /* SylixOS 最高优先级 */ #define LW_PRIO_LOWEST 255 /* SylixOS 最低优先级 */ /********************************************************************************************************* 优先级 (一般应用的最高优先级不能高于 LW_PRIO_CRITICAL 最低不能低过 LW_PRIO_LOW) *********************************************************************************************************/ #define LW_PRIO_EXTREME LW_PRIO_HIGHEST /* 最高优先级 */ #define LW_PRIO_CRITICAL 50 /* 关键处理任务 */ #define LW_PRIO_REALTIME 100 /* 实时处理任务 */ #define LW_PRIO_HIGH 150 /* 高优先级任务 */ #define LW_PRIO_NORMAL 200 /* 正常优先级 */ #define LW_PRIO_LOW 250 /* 低优先级 */ #define LW_PRIO_IDLE LW_PRIO_LOWEST /* 最低优先级 */