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

做网站多少钱一个鲜花网站模板下载

做网站多少钱一个,鲜花网站模板下载,微信小程序营销推广,培训机构连锁加盟5.1原因 线程延时是浪费CPU资源#xff0c;受否可以考虑延时的时候放弃CPU使用权#xff0c;这样就充分利用了CPU的资源。 如果线程进入阻塞状态#xff0c;没有其他线程运行#xff0c;是否可以运行一个空闲线程来做一些内存的清理等系统工作呢#xff1a;5.2 实现 5.2…5.1原因 线程延时是浪费CPU资源受否可以考虑延时的时候放弃CPU使用权这样就充分利用了CPU的资源。 如果线程进入阻塞状态没有其他线程运行是否可以运行一个空闲线程来做一些内存的清理等系统工作呢5.2 实现 5.2.1 定义空闲线程的栈 src中定义idle.c #include rtthread.h #include rthw.hextern rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX];#define IDLE_THREAD_STACK_SIZE 512ALIGN(RT_ALIGN_SIZE) static rt_uint8_t rt_thread_stack[IDLE_THREAD_STACK_SIZE];5.2.2 定义空闲线程的线程控制块 struct rt_thread idle;5.2.3 定义空闲线程函数 rt_ubase_t rt_idletask_ctr 0; void rt_thread_idle_entry(void *parameter) {parameter parameter;while(1){rt_idletask_ctr;} }5.2.4 空闲线程初始化 oid rt_thread_idle_init(void) {rt_thread_init(idle,idle,rt_thread_idle_entry,RT_NULL,rt_thread_stack[0],sizeof(rt_thread_stack),RT_THREAD_PRIORITY_MAX - 1);rt_list_insert_before((rt_thread_priority_table[RT_THREAD_PRIORITY_MAX-1]),(idle.tlist));}5.3 实现阻塞延时 5.3.1 thread.c中 void rt_thread_delay(rt_tick_t tick) {struct rt_thread *thread;thread rt_current_thread;thread-remaining_tick tick;rt_schedule(); }5.3.2 struct thread中 添加 rt_ubase_t remaining_tick;成员5.3.3 schedule.c /* 系统调度 */ void rt_schedule(void) {struct rt_thread *to_thread;struct rt_thread *from_thread;if(rt_current_thread idle){if(rt_flag1_thread.remaining_tick 0){from_thread rt_current_thread;to_thread rt_flag1_thread;rt_current_thread to_thread;}else if(rt_flag2_thread.remaining_tick 0){from_thread rt_current_thread;to_thread rt_flag2_thread;rt_current_thread to_thread;}else{return ;}}else{if(rt_current_thread rt_flag1_thread){if(rt_flag2_thread.remaining_tick 0){from_thread rt_current_thread;to_thread rt_flag2_thread;rt_current_thread to_thread;}else if(rt_current_thread-remaining_tick 0){from_thread rt_current_thread;to_thread idle;rt_current_thread to_thread;}else{return;}}else if(rt_current_thread rt_flag2_thread){if(rt_flag1_thread.remaining_tick 0){from_thread rt_current_thread;to_thread rt_flag1_thread;rt_current_thread to_thread;}else if(rt_current_thread-remaining_tick 0){from_thread rt_current_thread;to_thread idle;rt_current_thread to_thread;}else{return;}}}rt_hw_context_switch((rt_uint32_t)from_thread-sp,(rt_uint32_t)to_thread-sp);/* 产生上下文切换 */} 5.3.4 main.c中添加systick void __attribute__((interrupt)) _SysTick_exception (void) {rt_interrupt_enter();rt_tick_increase();rt_interrupt_leave(); }void SysTick_Config(uint32_t Reload) {SYSTICK_Cmd (FALSE);SYSTICK_Reload_Config(Reload);SYSTICK_Counter_Updata(); //向ST_CV寄存器写任意值以清零当前值寄存器SYSTICK_Clock_Config(SYSTICK_SYS_CLOCK_DIV_1); //系统节拍定时器时钟源选择SCLK作为时钟源SYSTICK_Systick_INT_Enable(TRUE);SYSTICK_Cmd(TRUE);INT_Interrupt_Enable(INT_SysTick,TRUE); //使能SYSTICK中断INT_All_Enable (TRUE); }5.3.5 系统时基更新函数 clock.c #include rtthread.h #include rthw.h #include debug.hstatic rt_tick_t rt_tick 0; extern rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX];void rt_tick_increase(void) {rt_ubase_t i;struct rt_thread *thread;rt_tick;for(i 0;i RT_THREAD_PRIORITY_MAX;i){thread rt_list_entry(rt_thread_priority_table[i].next,struct rt_thread,tlist);if(thread-remaining_tick 0){thread-remaining_tick--;}rt_schedule();}}5.3.6 中断函数 irq.c #include rthw.h #include rtthread.hvolatile rt_uint8_t rt_interrupt_nest; void rt_interrupt_enter(void) {rt_base_t level;// RT_DEBUG_LOG(RT_DEBUG_IRQ, (irq coming..., irq nest:%d\n,// rt_interrupt_nest));level rt_hw_interrupt_disable();rt_interrupt_nest ;//RT_OBJECT_HOOK_CALL(rt_interrupt_enter_hook,());rt_hw_interrupt_enable(level); }/*** This function will be invoked by BSP, when leave interrupt service routine** note please dont invoke this routine in application** see rt_interrupt_enter*/ void rt_interrupt_leave(void) {rt_base_t level;// RT_DEBUG_LOG(RT_DEBUG_IRQ, (irq leave, irq nest:%d\n,// rt_interrupt_nest));level rt_hw_interrupt_disable();rt_interrupt_nest --;// RT_OBJECT_HOOK_CALL(rt_interrupt_leave_hook,());rt_hw_interrupt_enable(level); }5.4 案例 main.c rt_hw_interrupt_disable(); SysTick_Config(SystemCoreClock/RT_TICK_PER_SECOND); void flag1_thread_entry( void *p_arg ) {for( ;; ){P_DBG(flag1 thread\n);flag2 1;P_DBG(flag1 thread will dela1\n);rt_thread_delay(10);flag2 0;P_DBG(flag1 thread will dela2\n);rt_thread_delay(10);} }/* 线程2 */ void flag2_thread_entry( void *p_arg ) {for( ;; ){P_DBG(flag2 thread\n);flag2 1;rt_thread_delay(2);flag2 0;P_DBG(flag2 thread will dela1\n);rt_thread_delay(2);} }
http://www.laogonggong.com/news/137553.html

相关文章:

  • 潍坊住房与城市建设部网站南昌网站公司
  • h5模板下载有哪些网站手机网站 设置
  • 公司 备案 网站名称公司名称大全20000个
  • 临沂品牌网站建设公司上海短视频拍摄制作公司
  • 怎样建设游戏网站网站单页在线制作
  • 高淳城乡建设局网站wordpress营销模板下载
  • 饰品网站建设手机排行榜2021销量排行
  • 戴南网站建设网站建设 上传和下载功能
  • 织梦网站自适应怎么做临沂做网站的公司
  • 下载个网上销售网站网站建设微信文章
  • 网站设计 字体的搭配wordpress连接微信
  • 万户网站建设公司虹口区建设工程管理网站
  • 网站建设培训教程网页的基本布局包括什么
  • 百度指数官方网站做网站的花费
  • 专业建站培训建筑公司网站源码开源
  • 亚洲成成品网站源码怎么给新网站做推广
  • 广汉做网站中国企业查询平台
  • 自己做的网站出现乱码温州市平阳县建设局网站
  • 知名网站有哪些?w5500做服务器网站
  • 杭州房地产网站建设在手机上怎么注册公司
  • 重新安wordpress网站wordpress改
  • 个人网站模板之家外贸业务员
  • 有动效得网站浏览器网页游戏
  • .net网站 还原数据库备份贵阳网站建设odenet
  • 做巧克力的网站网站建设pdf文件怎么发布
  • 网站建设公司行业描述填什么耳机 东莞网站建设
  • 做推文的网站玉树营销网站建设
  • 广安市城乡建设规划局网站网页制作讲解视频
  • 购销网站建设视频百度云好看的网站页面设计
  • 晋城网站建设开发产品如何推广市场