腾讯外贸电商平台,广西seo关键词怎么优化,成都网站建设网站建设哪家好,专做负面的网站线程管理 线程管理相关概念什么是时间片轮转调度器锁线程运行机制线程的五种状态 动态和静态创建线程区别动态和静态创建线程优缺点RT-Thread动态线程管理函数动态创建线程动态删除线程 RT-Thread静态线程管理函数静态创建线程 线程其他操作线程启动线程延时获得当前执行的线程… 线程管理 线程管理相关概念什么是时间片轮转调度器锁线程运行机制线程的五种状态 动态和静态创建线程区别动态和静态创建线程优缺点RT-Thread动态线程管理函数动态创建线程动态删除线程 RT-Thread静态线程管理函数静态创建线程 线程其他操作线程启动线程延时获得当前执行的线程句柄 线程管理相关概念
什么是时间片轮转
时间片轮转主要用于相同优先级的线程按线程所需时间片大小轮流运行 每个线程都需要配置时间片 时间片仅对优先级相同的就绪态线程有效 系统对其进行调度约束线程单次运行时长。 假设有 2 个优先级相同的就绪态线程 A 与 B A 的时间片为 10 B 的时间片为 5 那么系统会在A、 B 线程间来回切换执行 并且每次对 A 线程执行 10 个节拍的时长 对 B 线程执行 5个节拍的时长。
调度器锁
调度器是操作系统的核心其主要功能就是实现线程的切换即从就绪列表里面找到优先级最高的线程然后去执行该线程。 调度器锁用于部分代码避免被线程机制抢占
rt_enter_critical(); /* 进入临界区 */
/* 用户把需要上锁的代码放在这里 */
rt_exit_critical(); /* 退出临界区 */线程运行机制
线程具有独立的栈空间 当进行线程切换时 会将当前线程的上下文存在栈中 当线程要恢复运行时 再从栈中读取上下文信息 进行恢复。线程栈还用来存放函数中的局部变量。
线程的五种状态 动态和静态创建线程区别
动态创建线程是在运行时才动态创建线程的控制块和堆栈空间 静态创建线程是在编译时就将线程的控制块和堆栈空间预分配好然后再初始化启动
动态和静态创建线程优缺点 动态创建线程优点 对于非固定的线程运行过程可以销毁短暂使用的线程灵活分配线程内存 静态创建线程优点 对于固定线程不会产生动态内存分配确保线程创建成功 创建速度快用于确认线程的项目可提前发现内存是否不足
RT-Thread动态线程管理函数
动态创建线程
rt_thread_t rt_thread_create( const char *name, //线程名称void (*entry)(void *parameter), //线程的入口函数void *parameter, //入口函数的参数指针rt_uint32_t stack_size, //线程堆栈的大小rt_uint8_t priority, //线程优先级rt_uint32_t tick) //线程调度的时间片大小创建成功返回线程句柄创建失败返回RT_NULL
动态删除线程
rt_err_t rt_thread_delete(rt_thread_t thread); 删除线程成功,返回RT_EOK 删除线程失败返回-RT_ERROR
RT-Thread静态线程管理函数
静态创建线程
rt_err_t
rt_thread_init(struct rt_thread *thread, //线程控制块指针const char *name, //线程名称void (*entry)(void *parameter), //线程的入口函数void *parameter, //入口函数的参数指针void *stack_start, //线程堆栈的起始地址rt_uint32_t stack_size, //线程堆栈的大小rt_uint8_t priority, //线程的优先级rt_uint32_t tick) //线程调度的时间片大小线程其他操作
线程启动
rt_err_t rt_thread_startup(rt_thread_t thread)线程延时
rt_err_t rt_thread_sleep(rt_tick_t tick); // 以 1 个 OS Tick 为单位
rt_err_t rt_thread_delay(rt_tick_t tick); // 以 1 个 OS Tick 为单位
rt_err_t rt_thread_mdelay(rt_int32_t ms); // 以 ms 为单位获得当前执行的线程句柄
rt_thread_t rt_thread_self(void);