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

南宁网站建设nnxun网站设计与网页制作心得体会

南宁网站建设nnxun,网站设计与网页制作心得体会,建设部勘察设计网站,建立网站主页注意那些方面空闲线程 空闲线程是一个比较特殊的系统线程#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.dnsts.com.cn/news/263951.html

相关文章:

  • 瑞丽市建设局网站用meteor框架做的微博网站
  • 庞各庄网站开发公司世界十大网站开发公司
  • 网站诊断方法租云服务器一个月多少钱
  • 网站建站维护运营郑州正规公司网站建设服务
  • 帮企业做网站的公司天津市建设 中标公示网站
  • 网站收录不好怎么办济南seo排名优化推广
  • 网站ps照片怎么做的wordpress生成静态地图
  • 网站建设北京网页微博登录
  • 网站设计建设 公司wordpress 数据导入
  • 网站开发公司 重庆网站建设 技术协议
  • 做响应网站wordpress vpn
  • 合伙开公司建设网站被骗汕头建站服务
  • 旅游网站结构图免费正规大数据查询平台
  • 晋中市建设局网站网上运营培训班
  • 易思企业网站管理成都建设网站制作
  • 美工个人网站网站的功能有哪些
  • 装修公司做网站的好处网络运营推广怎么做
  • 保山市建设厅网站3d网站建设制作
  • asp网站管理系统源码利尔化学股票股吧
  • 个人网站怎么做推广wordpress用哪个seo
  • 天元建设集团有限公司标志seo服务加盟
  • 创办网站公司阿里巴巴seo站内优化方法
  • 怎么做商业网站模板美工培训费用
  • 学校网站建设联系电话分销网站建立
  • 平台企业是什么意思瑞安网站建设优化
  • 外贸开源网站网站架构 seo
  • 怎么做外贸企业网站企业网站源码带后台
  • 做网站如何收集资料做阿里巴巴的网站的费用
  • 临汾网站开发找人做网站内容自己编辑吗
  • 天津平台网站建设推荐免费 开源 企业网站