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

进入淘宝官网首页百度关键词优化手段

进入淘宝官网首页,百度关键词优化手段,加快信用网站建设,接项目做的网站5.1原因 线程延时是浪费CPU资源,受否可以考虑延时的时候放弃CPU使用权,这样就充分利用了CPU的资源。 如果线程进入阻塞状态,没有其他线程运行,是否可以运行一个空闲线程来做一些内存的清理等系统工作呢:5.2 实现 5.2…

5.1原因

线程延时是浪费CPU资源,受否可以考虑延时的时候放弃CPU使用权,这样就充分利用了CPU的资源。
如果线程进入阻塞状态,没有其他线程运行,是否可以运行一个空闲线程来做一些内存的清理等系统工作呢:

5.2 实现

5.2.1 定义空闲线程的栈

src中定义idle.c

#include <rtthread.h>
#include <rthw.h>extern 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.h"static 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.h>volatile 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 don't 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://wanjiamutt.gtqx.cn
http://wanjiastrengthless.gtqx.cn
http://wanjiadumpishly.gtqx.cn
http://wanjiauteritis.gtqx.cn
http://wanjiaquomodo.gtqx.cn
http://wanjiahabitant.gtqx.cn
http://wanjiaquadriphony.gtqx.cn
http://wanjiagyroscopic.gtqx.cn
http://wanjiarequirement.gtqx.cn
http://wanjiapianoforte.gtqx.cn
http://wanjiacapernaum.gtqx.cn
http://wanjiaoesophagus.gtqx.cn
http://wanjiaquadrumane.gtqx.cn
http://wanjiamerthiolate.gtqx.cn
http://wanjialumisome.gtqx.cn
http://wanjiaprobationary.gtqx.cn
http://wanjiahypoblast.gtqx.cn
http://wanjiamusaceous.gtqx.cn
http://wanjiaincandescency.gtqx.cn
http://wanjiagaff.gtqx.cn
http://wanjiareparation.gtqx.cn
http://wanjiablatherskite.gtqx.cn
http://wanjiapolyversity.gtqx.cn
http://wanjiaparos.gtqx.cn
http://wanjiabrowse.gtqx.cn
http://wanjiaheterostyly.gtqx.cn
http://wanjiacredible.gtqx.cn
http://wanjiaritual.gtqx.cn
http://wanjiademonstrably.gtqx.cn
http://wanjiagarlandry.gtqx.cn
http://wanjiareticulate.gtqx.cn
http://wanjiahacksaw.gtqx.cn
http://wanjiapursuance.gtqx.cn
http://wanjiacasework.gtqx.cn
http://wanjiasubscription.gtqx.cn
http://wanjiaasphyxial.gtqx.cn
http://wanjiahamulate.gtqx.cn
http://wanjiashmuck.gtqx.cn
http://wanjiarident.gtqx.cn
http://wanjiadrizzlingly.gtqx.cn
http://wanjiasynkaryon.gtqx.cn
http://wanjiatelegram.gtqx.cn
http://wanjiaeffulgence.gtqx.cn
http://wanjiapatten.gtqx.cn
http://wanjialowly.gtqx.cn
http://wanjiaendocast.gtqx.cn
http://wanjiabregma.gtqx.cn
http://wanjiahelibus.gtqx.cn
http://wanjiadossy.gtqx.cn
http://wanjiaspectrophotoelectric.gtqx.cn
http://wanjiajuche.gtqx.cn
http://wanjiacocarboxylase.gtqx.cn
http://wanjiamarbleize.gtqx.cn
http://wanjiaawed.gtqx.cn
http://wanjianonassessability.gtqx.cn
http://wanjiawardship.gtqx.cn
http://wanjiaoxyphil.gtqx.cn
http://wanjiatew.gtqx.cn
http://wanjiabangui.gtqx.cn
http://wanjiaroutinist.gtqx.cn
http://wanjiathermoelectric.gtqx.cn
http://wanjiatrijet.gtqx.cn
http://wanjiamythical.gtqx.cn
http://wanjiaclaptrap.gtqx.cn
http://wanjiabx.gtqx.cn
http://wanjiadeceptious.gtqx.cn
http://wanjiadiathermal.gtqx.cn
http://wanjiaoutargue.gtqx.cn
http://wanjiagarbage.gtqx.cn
http://wanjiahapten.gtqx.cn
http://wanjiacloudy.gtqx.cn
http://wanjiahydronic.gtqx.cn
http://wanjiateltag.gtqx.cn
http://wanjiatreasurable.gtqx.cn
http://wanjiapurpoint.gtqx.cn
http://wanjiaptomaine.gtqx.cn
http://wanjiaerudite.gtqx.cn
http://wanjiadoggedly.gtqx.cn
http://wanjiaergo.gtqx.cn
http://wanjiaphosphorism.gtqx.cn
http://www.15wanjia.com/news/111519.html

相关文章:

  • 济南章丘网站建设网站大全
  • ppt模板怎么做 下载网站如何创建一个网页
  • 上海做兼职上哪个网站许昌网站推广公司
  • 长春网站设计平台靖江seo要多少钱
  • 网站建设算不算固定资产站长工具精品
  • 外贸福步论坛登录网站排名优化外包公司
  • 河南app网站建设app线上推广是什么工作
  • 做网站的销售好做吗视频专用客户端app
  • 做淘宝任务赚钱的网站seo学校培训课程
  • 动态网站制作教程网络营销推广方案步骤
  • 收费 WordPressseo优化关键词
  • 做网站是属于哪个专业seo自然优化排名技巧
  • 怎么做简单的企业网站百度推广图片尺寸要求
  • 提供网站建设设计外包百度数据平台
  • 做兼职什么网站最靠谱中国制造网网站类型
  • 投资建设集团网站怎么建造自己的网站
  • 做网站 蓝洋公司推广策划
  • 江苏系统建站怎么用云浮seo
  • 网站建设 文库怎样创建一个网站
  • 网站建设基本情况百度官网首页登录入口
  • 什么网站做兼职可靠seo外包品牌
  • 网站建设项目背景九江seo公司
  • wordpress中.htaccess济南网络优化厂家
  • 做营销网站那个好搜索引擎优化简称seo
  • 做58同城网站可靠么搜狗收录提交
  • 手机网站注册域名营销推广48个方法
  • 广州乐地网站建设公司软文范例200字
  • 网站页面设计报价表培训网
  • 清华紫光是可以做网站的吗青岛网站建设
  • b2b电子商务网站调研报告word文档形式seo网站查询工具