当前位置: 首页 > news >正文

网站联盟平台服务平台名称大全

网站联盟平台,服务平台名称大全,网站组织结构图,网站开发存在的风险空闲线程 空闲线程是一个比较特殊的系统线程#xff0c;它具备最低的优先级。当系统中无其他就绪线程可运行时#xff0c;调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…空闲线程 空闲线程是一个比较特殊的系统线程它具备最低的优先级。当系统中无其他就绪线程可运行时调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结构且永远不被挂起。 在RT-Thread 实时操作系统中空闲线程向用户提供了钩子函数空闲线程钩子函数可以让系统在空闲的时候执行一些非紧急事务例如系统运行指示灯闪烁 CPU 使用率统计等等。 //设置钩子函数rt_err_t rt_thread_idle_sethook(void (*hook)(void))//删除钩子函数rt_err_t rt_thread_idle_delhook(void (*hook)(void)空闲线程钩子函数示例 #include rtthread.h #include rthw.h#define THREAD_PRIORITY 20 #define THREAD_STACK_SIZE 1024 #define THREAD_TIMESLICE 5 /* 指向线程控制块的指针 */ static rt_thread_t tid RT_NULL; /* 空闲函数钩子函数执行次数 */ volatile static int hook_times 0; /* 空闲任务钩子函数 */ static void idle_hook() {if (0 (hook_times % 10000)){rt_kprintf(enter idle hook %d times.\n, hook_times);}rt_enter_critical();//临界区保护hook_times;rt_exit_critical();//临界区保护 }/* 线程入口 */ static void thread_entry(void *parameter) {int i 5;while (i--){rt_kprintf(enter thread1.\n);rt_enter_critical();hook_times 0;rt_exit_critical();/* 休眠500ms */rt_kprintf(thread1 delay 50 OS Tick.\n, hook_times);rt_thread_mdelay(500);}rt_kprintf(delete idle hook.\n);/* 删除空闲钩子函数 */rt_thread_idle_delhook(idle_hook);rt_kprintf(thread1 finish.\n); }int idle_hook_sample(void) {/* 设置空闲线程钩子 */rt_thread_idle_sethook(idle_hook);/* 创建线程 */tid rt_thread_create(thread1,thread_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE);if (tid ! RT_NULL)rt_thread_startup(tid);return 0; }/* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(idle_hook_sample, idle hook sample);运行结果 系统会在线程1执行rt_thread_mdelay(500)时进入空闲线程。 注意空闲线程是一个线程状态永远为就绪态的线程所以钩子函数中执行的相关代码必须保证空闲线程在任何时刻都不会被挂起 例如rt_thread_delay()、 rt_sem_take()等可能会导致线程挂起的阻塞类函数都不能在钩子函数中使用。空闲线程可以设置多个钩子函数。 系统调度钩子函数 #include rtthread.h#define THREAD_STACK_SIZE 1024 #define THREAD_PRIORITY 20 #define THREAD_TIMESLICE 10/* 针对每个线程的计数器 */ volatile rt_uint32_t count[2];/* 线程1、2共用一个入口但入口参数不同 */ static void thread_entry(void* parameter) {rt_uint32_t value;value (rt_uint32_t)parameter;while (1){rt_kprintf(thread %d is running\n, value);rt_thread_mdelay(1000); //延时一段时间} }static rt_thread_t tid1 RT_NULL; static rt_thread_t tid2 RT_NULL;static void hook_of_scheduler(struct rt_thread* from, struct rt_thread* to) {rt_kprintf(from: %s -- to: %s \n, from-name , to-name); }int scheduler_hook(void) { /* 设置调度器钩子 */rt_scheduler_sethook(hook_of_scheduler);/* 创建线程1 */tid1 rt_thread_create(thread1, thread_entry, (void*)1, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); if (tid1 ! RT_NULL) rt_thread_startup(tid1);/* 创建线程2 */tid2 rt_thread_create(thread2, thread_entry, (void*)2, THREAD_STACK_SIZE, THREAD_PRIORITY,THREAD_TIMESLICE - 5);if (tid2 ! RT_NULL) rt_thread_startup(tid2);return 0; }/* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(scheduler_hook, scheduler_hook sample);运行结果 可以看到系统的线程调度。 系统的上下文切换是系统运行过程中最普遍的事件 有时用户可能会想知道在某一个时刻发生了什么样的线程切换RT-Thread向用户提供了一个系统调度钩子函数这个钩子函数在系统进行任务切换时运行通过这个钩子函数我们可以了解到系统任务调度时的一些信息。 rt_scheduler_sethook(void (*hook)(struct rt_thread *from, struct rt_thread *to))//系统调度钩子函数
http://www.hkea.cn/news/14308919/

相关文章:

  • 防水网站建设企业网站硬件方面建设
  • 美发网站怎么做wordpress注意
  • 网站建设接单吧有人有片资源吗免费高清
  • 100m做电影网站千锋教育
  • 网站的维护如何进行品牌营销
  • 找做牙工作上哪个网站东莞市住房城乡建设局官网
  • 乌海网站建设wordpress更改自定义文章页面
  • 本地网站可以做吗?wordpress免费企模板下载
  • 做公司网站的资料门户网站建设考核总结
  • 成都网站建设 致尚wordpress域名 文件
  • 模版网站后期可以更换图片吗seo 网站改版
  • 眉山网站建设兼职重庆装修公司推荐
  • 网站开发和程序员遂宁网站制作
  • 企业网站导航设计静态网页制作的企业
  • 做网站需要ftp体育门户网站源码
  • 网站超级推广网站维护细则
  • 广告网站模板下载不了怎么做网站的ico
  • 计算机网络 网站开发与设计广告交流群
  • 莱州做网站福田祥菱怎么样
  • 合肥网站制作公司排名网络营销工具优缺点
  • 静态网站开发语言wordpress屏蔽索引
  • 不良网站浏览窗口福步外贸论坛怎么发帖
  • 网站做零售最新网站排名优化方法
  • 简单免费自建网站全渠道营销的概念
  • 外贸自建站如何收款国内免费可商用图片素材网站
  • 哪个网站做logo网站个人备案需要什么资料
  • 车辆年检查询系统官方网站最基本的网络营销站点
  • 北京平台网站建设公司互联网官网入口
  • 网站的内部链接如何做网站建设直通车关键词设置
  • 广西网站建设产品介绍软件开发主要是干什么的