优先级

RT-thread内核之进程间通信

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-13 00:09:28
这里面见到的同步和互斥的概念非常清晰,转载自: http://www.cnblogs.com/King-Gentleman/p/4311582.html 一、进程间通信机制 rt-thread操作系统的IPC(Inter-Process Communication,进程间同步与通信)包含有中断锁、调度器锁、信号量、互斥锁、事件、邮箱、消息队列。其中前5个主要表现为线程间同步,邮箱与消息队列表现为线程间通信。本文主要介绍它们的一些特性及使用场合。 1、中断锁 关闭中断也叫中断锁,是禁止多任务访问临界区最简单的一种方式,即使是在分时操作系统中也是如此。当中断关闭的时候,就意味着当前任务不会被其他事件打断(因为整个系统已经不再响应那些可以触发线程重新调度的外部事件),也就是当前线程不会被抢占,除非这个任务主动放弃了处理器控制权。关闭中断/恢复中断API接口由BSP实现,根据平台的不同其实现方式也大不相同。比如在stm32平台中中断锁机制通过关闭中断函数(rt_base_t rt_hw_interrupt_disable(void),这个函数用于关闭中断并返回关闭中断前的中断状态。)以及恢复中断函数(void rt_hw_interrupt_enable(rt_base_t level),恢复调用rt_hw_interrupt_disable()函数前的中断状态)实现。 警告:

RT Thread IPC总结

北慕城南 提交于 2020-02-12 23:35:41
1、关中断的方法可以实现互斥,但是这时候是无法响应中断的 2、调度器上锁可以实现多任务的互斥,但是无法实现与中断的互斥 3、信号量,轻量级的互斥机制,因为初始值不一定为1,所以他没有所有者(拥有者)的概念,且没有解决优先级翻转的问题 4、互斥量是管理临界资源的一种有效手段,它使用优先级继承方法解决了优先级翻转的问题 5、事件主要特点是可以实现一对多,多对多的同步。事件集的关联形式可以是“逻辑或”和“逻辑与” 。 6、前面是多任务间的同步与互斥,邮件是线程,中断服务,定时器向线程发送消息的有效手段。邮箱与 线程对象等之间是相互独立的。线程,中断服务和定时器都可以向邮箱发送消息,但是只有线程能够接收 消息(因为当邮箱为空时,线程将有可能被挂起)。每封邮件的大小一般是4字节,一般是缓冲区指针。 7、消息队列是以队列的方式来管理消息,每个消息有相同的消息长度,发送的消息不能超过这个长度, 但是如果发送的消息小于这个长度,并没有表示真实长度的数值? IPC 中一般detach是静态内存的管理模式,是删除内核对象,唤醒相应被阻塞的线程,delete是动态内存 的管理模式,是删除内核对象,释放申请的缓冲区,唤醒相应被阻塞的线程。 来源: https://www.cnblogs.com/cpf123/archive/2012/11/01/2749843.html

为运算表达式设计优先级

谁说我不能喝 提交于 2020-02-12 23:09:00
题目 : 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 输入: “2 3-4 5” 输出: [-34, -14, -10, -10, 10] 解释: (2*(3-(4 5))) = -34 ((2 3)-(4 5)) = -14 ((2 (3-4)) 5) = -10 (2 ((3-4) 5)) = -10 (((2 3)-4)*5) = 10 来源:力扣(LeetCode) 基础题:递归加回溯(未剪枝,可用hashmap) public List < Integer > diffWaysToCompute ( String input ) { return helper ( input ) ; } public List < Integer > helper ( String s ) { List < Integer > list = new ArrayList < Integer > ( ) ; if ( ! s . contains ( "+" ) && ! s . contains ( "-" ) && ! s . contains ( "*" ) ) { list . add ( Integer . valueOf ( s ) ) ; return list

蓝桥杯2019-省赛-C/C++-A组G题

点点圈 提交于 2020-02-12 21:52:52
题目 外卖店优先级 【问题描述】 “饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。 如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。 给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优 先缓存中。 【输入格式】 第一行包含 3 个整数 N、M 和 T 。 以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到 一个订单。 【输出格式】 输出一个整数代表答案。 【样例输入】 2 6 6 1 1 5 2 3 1 6 2 2 1 6 2 【样例输出】 1 【样例解释】 6 时刻时,1 号店优先级降到 3,被移除出优先缓存;2 号店优先级升到 6, 加入优先缓存。所以是有 1 家店 (2 号) 在优先缓存中。 【评测用例规模与约定】 对于 80% 的评测用例,1 ≤ N, M, T ≤ 10000。 对于所有评测用例,1 ≤ N, M, T ≤ 100000,1 ≤ ts ≤ T ,1 ≤ id ≤ N。 代码 1 #include<iostream> 2

CSS的三大特性

◇◆丶佛笑我妖孽 提交于 2020-02-12 18:46:14
CSS有三个非常重要的特性:层叠性、继承性、优先级 一、层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则: 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式 样式不冲突,不会层叠。 二、继承性 css中的继承:子标签会继承父标签的某些样式,如文本颜色和字号。简单的理解就是:子承父业。 1、恰当的使用继承可以简化代码,降低CSS样式的复杂性 2、子元素可以继承父元素的样式(text- , font-, line-这些元素开头的可以继承,以及color属性)。跟文字相关的样式 行高的继承性 行高可以跟单位也可以不跟单位 如果子元素没有设置行高,则会继承父元素的行高为1.5。 此时,子元素的行高是:当前子元素的文字大小*1.5 三、优先级 当同一个元素指定多个选择器,就会有优先级的产生 选择器相同,则执行层叠行 选择器不同,则根据选择器权重执行 选择器          选择器权重 继承或者*          0.0.0.0. 元素选择器          0..0.0.1 类选择器、伪类选择器    0.0.1.0 ID选择器          0.1.0.0 行内样式style=""       1.0.0.0 !important 重要的       无穷大 优先级注意点: 1

css伪元素::before与::after使用基础示例

瘦欲@ 提交于 2020-02-12 12:16:48
css伪类 css伪类用于向某些选择器添加特殊的效果。 :link, :visited, :hover, :focus, :active, :first-child, :lang css3新增的伪类: :last-child , :only-child , :first-of-type , :last-of-type , :only-of-type , :nth-child(n) , :nth-last-child(n) , :nth-of-type(n) , :nth-last-of-type(n) , :root , :empty , :target , :enabled , :disabled , :checked , :not(selector) , css伪元素 css伪元素用于向某些选择器设置特殊效果。 ::first-letter, ::first-line, ::before, ::after css3新增的伪元素 ::selection css伪类和伪元素的区别 伪类可以叠加使用,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾 为了避免大家混淆伪类和伪元素,css3中的标准规定伪类使用单冒号“:” ,伪元素使用双冒号“::”,但在此之前都使用的单冒号“:”,所以为了保证兼容伪元素两种使用方法都是可以的。 伪类与类优先级相同,伪元素与标签优先级相同

CLR via C# —— 线程

与世无争的帅哥 提交于 2020-02-12 11:06:02
线程的作用 早期的操作系统没有 "线程" 的概念, 例如16位的 Windows 就是一个不支持多线程的操作系统. 这样的系统有一个特征: 整个系统同时只运行着一个任务, 包含操作系统代码还有应用程序的代码. 这带来了一个问题: 如果当前运行的这个任务需要很长一段时间才能执行完成, 它就会阻止其它任务执行. 如果某个程序含有 bug , 程序进入了一个死循环, 用户只好重新启动电脑了. 这样的操作系统显然很不给力, 微软决定改进操作系统内核, 让它的健壮性, 可靠性, 扩展性以及安全性都要得到提高. 微软从1988年11月开始编写 Windows NT, 微软在设计这个系统内核的时候, 决定在一个进程中运行应用程序的每个实例, 进程则是应用程序的一个实例要使用的资源的集合. 每一个进程被赋予了一个虚拟地址空间, 确保一个进程无法访问另一个进程的代码和数据. 因为一个进程无法破坏另一个进程的代码和数据, 所以系统的健壮性提高了; 程序无法访问另一个应用程序的用户名, 密码等信息, 因此安全性提高了. 虽然数据无法被破坏, 而且更安全, 但如果一个应用程序进入无限循环, 机器只有1个 CPU 的话, CPU 就会执行无限循环, 系统仍然会停止响应. 微软修正这个问题的办法就是 "线程". 线程的职责是对 CPU 进行虚拟化 , Windows 为每个进程都提供了该进程专用的线程

Java 并发 线程的优先级

♀尐吖头ヾ 提交于 2020-02-12 10:29:48
Java 并发 线程的优先级 @author ixenos 低优先级线程的执行时刻 1.在任意时刻,当有多个线程处于可运行状态时,运行系统总是挑选一个优先级最高的线程执行,只有当线程停止、退出或者由于某些原因不执行的时候,低优先级的线程才可能被执行 2.两个优先级 相同 的线程同时等待执行时,那么运行系统会以round-robin的方式选择一个线程执行(即轮询调度,以该算法所定的)(Java的优先级策略是抢占式调度!) 3.被选中的线程可因为一下原因退出,而给其他线程执行的机会:   1) 一个更高优先级的线程处于可运行状态(Runnable)   2)线程主动退出(yield),或它的run方法结束   3)在支持 分时 方式的系统上,分配给该线程的时间片结束 4.Java运行系统的线程调度算法是 抢占式 (preemptive)的,当更高优先级的线程出现并处于Runnable状态时,运行系统将选择高优先级的线程执行 5.例外地,当高优先级的线程处于阻塞状态且CPU处于空闲时,低优先级的线程也会被调度执行 1 public class PriorityExample{ 2 public static void main(Strinig[] args){ 3 Thread a = new PThread("A"); 4 Thread b = new PThread("B"); 5

java 外卖店优先级

谁说胖子不能爱 提交于 2020-02-11 23:55:08
【问题描述】 “饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有 一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减 到 0;而如果外卖店有订单,则优先级不减反加,每有一单优先级加 2。 如果某家外卖店某时刻优先级大于 5,则会被系统加入优先缓存中;如果 优先级小于等于 3,则会被清除出优先缓存。 给定 T 时刻以内的 M 条订单信息,请你计算 T 时刻时有多少外卖店在优 先缓存中。 【输入格式】 第一行包含 3 个整数 N、M 和 T。 以下 M 行每行包含两个整数 ts 和 id,表示 ts 时刻编号 id 的外卖店收到 一个订单。 【输出格式】 输出一个整数代表答案。 【样例输入】 2 6 6 1 1 5 2 3 1 6 2 2 1 6 2 【样例输出】 1 【样例解释】 6 时刻时,1 号店优先级降到 3,被移除出优先缓存;2 号店优先级升到 6, 加入优先缓存。所以是有 1 家店 (2 号) 在优先缓存中。 把要求的时间点ti前的情况放进去二维数组,再去ti判断是否在队列。 public class Main { public static void main(String args[]) { int t = 0, w = 0; Scanner sc = new Scanner

8.配置文件的加载

纵饮孤独 提交于 2020-02-11 22:47:17
1.配置文件的加载位置    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件。 1 –file:./config/ 2 3 –file:./ 4 5 –classpath:/config/ 6 7 –classpath:/    优先级由高到底,高优先级的配置会覆盖低优先级的配置。 SpringBoot会从这四个位置全部加载主配置文件。 项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。 1 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties 2.外部配置的加载顺序    SpringBoot 也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#boot-features-external-config 来源: