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

做服装设计有什么网站可以参考seo优化一般包括哪些内容

做服装设计有什么网站可以参考,seo优化一般包括哪些内容,威县网站建设代理价格,微盟小程序官网声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!! rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…

        声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!!

        rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件功能,相反带上了文件工能反而对内存有限的单片机反而是一种负担。

        裸机开发程序执行流程:如果没有操作系统的的使用称为裸机开发,如果在while()循环里面有两个调度函数需要执行,程序执行顺序是在执行完A函数之后,才会去执行B函数。

int main()
{while(1)
{Mother_Freed();//A函数Mother_Message();//B函数
}
return 0;
}

 

        这就造成了一个问题,那就是,在执行A函数的期间B函数是得不到相应的,只能等待A函数,执行结束,A函数是喂孩子,B函数是回复消息,如果B函数执行时间过长,不执行A函数孩子是不是就饿死了。为了解决这个问题可以加入操作系统,也就是freertos。

        rtos开发程序执行流程:rtos操作系统会将执行函数,封装为任务,每个任务分配时间达到时间切换任务,由于分配时间较短,在外界看来就是同时执行多任务,使用操作系统就可以解决上面的难题。

             

            

void Mother_Freed(void);//声明函数
void Mother_Message(void);//声明函数int main()
{
create_task(喂饭);//创建任务 
create_task(发消息);//创建任务
start_scheduler();//执行任务调度器
while(1)
{
sleep();
}}
void Mother_Freed(void)//封装
{
while(1)
{
Mother_free();//调用函数喂饭
}
}
void Mother_Message(void)//封装
{
while(1)
{
Mother_message();//调用函数发消息
}
}

        rtos互斥操作:在操作系统中,同时执行多个任务的时候,如果多任务访问同一资源,就会发生互斥,这个时候会出现数据混乱,有可能出现死锁,可以通过软件加入变量,互斥使用系统资源。

int g_canuse = 1;
03
04 void uart_print(char *str)
05 {
06     if (g_canuse)
07 {
08     g_canuse = 0;
09     printf(str);
10     g_canuse = 1;
11 }
12 }
13
14 task_A()
15 {
16     while (1)
17 {
18     uart_print("0123456789\n");
19 }
20 }
21
22 task_B()
23 {
24     while (1)
25 { uart_print("abcdefghij");
27 }
28 }
29
30 void main()
31 {
32 // 创建 2 个任务
33     create_task(task_A);
34     create_task(task_B);
35 // 启动调度器
36     start_scheduler();
37 }

       当 g_canuse = 0;这个变量等于0的时候,就可以,对大多数访问同一资源的情况出现互斥,但是只是大部分,因为rtos这个操作系统,在执行任务转换的时候,A执行进入if函数转换,B函数执行printf();执行一般转换,在执行A就会发现打印出来的数字还是乱码的情况,但是可以避免大部分情况。

        出现上面的原因是因为,先变量判断在赋值,如果我们将赋值提前可以避免,出现失误嘛,如果,我们将usart_printf();这个函数重新定义为一下格式,会不会完全避免这种情况。

01 void uart_print(char *str)
02 {
03 g_canuse--; ① 减一
04 if( g_canuse == 0 ) ② 判断
05 {
06 printf(str); ③ 打印
07 }
08 g_canuse++; ④ 加一
09 }

        这里即使将变量赋值提前,但是还是会出现打印出错的情况,语句1的执行可以分为3个步奏,1从内存读取变量的值放入寄存器2修改寄存器的值让变量减1 3把寄存器的值写到内存变量上面如果执行12切换到B任务,此时变量还是1,B任务执行进行printf打印一半进行切换,A任务会从打断地方执行,也能进入if函数,这个时候打印出来也会是混乱的值。

        当我们使用rtos,写多任务程序的时候一定要注意,函数资源互斥问题,任何一种操作系统都会提供相应的函数。

         rtos互斥操作:如果任务之间有依赖关系,比如任务 A 执行了某个操作之后,需要任务 B 进行后续的处理。如果代码如下编写的话,任务 B 大部分时间做的都是无用功。

// RTOS 程序
02 int flag = 0;
03
04 void task_A()
05 {
06 while (1)
07 {
08 // 做某些复杂的事情
09 // 完成后把 flag 设置为 1
10 flag = 1;
11 }
12 }
13
14 void task_B()
15 {
16 while (1)
17 {
18 if (flag)
19 {
20 // 做后续的操作
21 }
22 }
23 }
24
25 void main()
26 {
27 // 创建 2 个任务
28 create_task(task_A);
29 create_task(task_B);
30 // 启动调度器
31 start_scheduler();
32 }
上述代码中,在任务 A 没有设置 flag 为 1 之前,任务 B 的代码都只是去判断 flag。而
任务 A、B 的函数是依次轮流运行的,假设系统运行了 100 秒,其中任务 A 总共运行了 50
秒,任务 B 总共运行了 50 秒,任务 A 在努力处理复杂的运算,任务 B 仅仅是浪费 CPU 资源。
如果可以让任务 B 阻塞,即让任务 B 不参与调度,那么任务 A 就可以独占 CPU 资源加快
处理复杂的事情。当任务 A 处理完事情后,再唤醒任务 B。示例代码如下:
// RTOS 程序
02 void task_A()
03 {
04 while (1)
05 {
06 // 做某些复杂的事情
07 // 释放信号量,会唤醒任务 B;
08 }
09 }
10
11 void task_B()
12 {
13 while (1)
14 {
百问网
13
15 // 等待信号量, 会让任务 B 阻塞
16 // 做后续的操作
17 }
18 }
19
20 void main()
21 {
22 // 创建 2 个任务
23 create_task(task_A);
24 create_task(task_B);
25 // 启动调度器
26 start_scheduler();
27 }

http://www.ds6.com.cn/news/47632.html

相关文章:

  • 哈尔滨手机网站制作最有效的线下推广方式
  • 专业网站制作公司地址湖北网站设计
  • 国外海报设计网站营销团队外包
  • 做网站一天打多少个电话2023今日新闻头条
  • blog网站模板在哪里找专业推广团队
  • 天津设计公司排行榜seo在线论坛
  • 威海精神文明建设办公室网站发外链的网址
  • 网站建设及网站推广百度seo效果怎么样
  • 个人网站psd网络营销方案策划论文
  • 网络直播网站开发上海网站快速优化排名
  • 一个网站如何做外链建立网站需要什么技术
  • 用什么软件做动漫视频网站好百度浏览器app下载
  • 邯郸网站网站建设免费seo网站自动推广软件
  • wordpress点击网页效果洛阳网站建设优化
  • 电商培训网站网站优化公司哪家效果好
  • 如何复制单页面网站b2b免费网站推广平台
  • 网站banner图设计成多少合适郑州网站建设专业乐云seo
  • WordPress网易云外链音越秀seo搜索引擎优化
  • 做课件好用的网站关键词调整排名软件
  • 湖南株洲网站建设关键词林俊杰百度云
  • 社区建立网站超级推荐的关键词怎么优化
  • 服装箱包网站建设网站运营培训学校
  • 易优cms怎么样上海seo优化外包公司
  • 建设网站的安全性介绍百度上海分公司地址
  • 汉中专业做网站百度问一问免费咨询
  • 中国空间站有多大广告联盟平台自动赚钱
  • django做的网站安全吗网站建立的步骤
  • 青浦网站优化鸡西seo顾问
  • access做调查表网站沪深300指数是什么意思
  • 独立站是什么平台深圳专业建站公司