reactor是单线程的,所以我不是这个。proactor,在IO完成后才通知任务分派。而我在出现事件时就通知了,IO需任务分派自己完成。二者都提到应用逻辑比较复杂,要照顾到AIO或SIO模式,而我们的应用不需要关心这些,所有的异步逻辑和线程调度完全是透明的,应用按照自己的逻辑随心所欲的写就可以了。...
分类:
其他好文 时间:
2015-02-27 13:16:24
阅读次数:
201
C++拾遗--原子操作解决线程冲突
前言
在多线程中操作全局变量一般都会引起线程冲突,为了解决线程冲突,引入原子操作。所谓原子操作,是指不会被线程调度机制打断的操作,操作一旦开始,就得执行到结束为止。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序是不可以被打乱,或者切割掉只执行部分。原子操作一般靠底层汇编实现。...
分类:
编程语言 时间:
2015-02-26 23:02:25
阅读次数:
400
一. 何谓"原子操作":原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch).二. 为什么关注原子操作?1. 如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费昂贵性能开销的锁. - (巧妙...
分类:
其他好文 时间:
2015-02-15 12:00:10
阅读次数:
184
一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,提供了非常多强大的函数2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任...
分类:
移动开发 时间:
2015-02-11 16:24:38
阅读次数:
169
ThreadPoolExecutor机制一、概述1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务;2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机...
分类:
编程语言 时间:
2015-02-11 15:51:59
阅读次数:
186
一个操作系统如果只是具备了高优先级任务能够“立即”获得处理器并得到执行的特点,那么它仍然不算是实时操作系统。因为这个查找最高优先级线程的过程决定了调度时间是否具有确定性,例如一个包含n个就绪任务的系统中,如果仅仅从头找到尾,那么这个时间将直接和n相关,而下一个就绪线程抉择时间的长短将会极大的影...
分类:
编程语言 时间:
2015-02-08 12:49:31
阅读次数:
1925
一、前言RT-Thread中提供的线程调度器是基于全抢占式优先级的调度,在系统中除了中断处理函数、调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身.系统总共支持256个优先级(0 ~ 255,数值越小的优先级越高,0为最高优先级,255分配给空闲...
分类:
编程语言 时间:
2015-02-06 21:40:02
阅读次数:
366
Java多线程之线程的同步
实际开发中我们也经常提到说线程安全问题,那么什么是线程安全问题呢?
线程不安全就是说在多线程编程中出现了错误情况,由于系统的线程调度具有一定的随机性,当使用多个线程来访问同一个数据时,非常容易出现线程安全问题。具体原因如下:
1,多个线程同时访问一个数据资源(该资源称为临界资源),形成数据发生不一致和不完整。
2,数据的不一致往往是因为一个线...
分类:
编程语言 时间:
2015-02-04 16:41:20
阅读次数:
241
1、操作系统线程调度过程
每个线程都有一个上下文CONTEXT结构体,保存在线程的内核对象中,这个上下文中保存了线程上一次执行时CPU寄存器
的状态。每隔固定时间,Windows会查看所有当前存在的线程内核对象,其中只有一些是可调度的。Windows在可调度的
线程中选择一个,并将上次保存到线程上下文中的数据载入CPU寄存器中。(上下文切换)
CPU时间片到后,Windows移出这个线程,...
分类:
编程语言 时间:
2015-01-28 13:10:00
阅读次数:
220
Linux内核的三种调度策略: 1、SCHED_OTHER 分时调度策略 2、SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3、SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于...
分类:
编程语言 时间:
2015-01-19 18:57:51
阅读次数:
282