2015-11-06 Li Shuai
协程是用户态内的,或者准确点说是线程内部的一种上下文切换技术,由于协程切换是在用户态下完成的,所以省去了线程切换时频繁出入内核态的资源开销,可以形成一种很高效的协作式并发技术。 这个简短的视频介绍了一些有关协程、并发之类的东西,很有意义。 Coroutines, event loops, and the history of Python generators 从里面学习到两种很好的协程的调度方式。把代码拿过来分享一下。 Coroutine trampoline 这种方式下的协程调度比较好理解,就是从一个初始状态开始,一条执行线索不断的在多个协程之间切换,就好像多个协程协作完成一项任务。 代码: def co_tramp 继续阅读 »
2016-10-29 ruki
tbox的协程实现,是stackfull模式的,需要指定独立堆栈和协程函数,目前暂时还不能像golang那样实现堆栈的动态增长,之后会对其进行支持。 目前提供下面一些功能特性: 1. 提供yield切换调度支持,这个是必须的哈 2. 提供suspend(挂起)/resume(恢复)协程接口,不同于yield的是,被suspend后,如果不显示调用resume恢复它,是永远不会被调度到的 3. 提供sleep等待接口支持 4. 提供io调度支持,支持socket等io等待(内部使用epoll, poll, kqueue, select, poll等接口调度) 5. 原生支持stream,socket,http等模块的协程支持,可 继续阅读 »
2013-03-07 刘太华
1,通常用到 perf sched record 收集系统相关的调度数据, 然后使用pert ached latency --sort max 来打印出收集到的信息,perf sched latency --sort max 展现的数据中各个column的含义如下: 继续阅读 »
2014-12-08 Mithrilwoodrat
简陋的FCFS实现 # -- coding: utf-8 -- class Pcb(object): def init(self): self.pid = None self.ppid = None # id of parent self.arrive_time = 0 self.need_time = 0 self.pprio = 0 #priority 继续阅读 »
2016-10-14 Piasy
RxJava 最大的两个特点:事件流操作,异步。 组合利用各种操作符,我们可以实现复杂的事件流处理需求,例如前文中提到的缓存{:target="_blank"}:根据一组 id,先从本地查询,本地缺失的部分再从服务器获取,再把两者合并起来返回,最后服务器获取的部分还要保存到本地。 继续阅读 »
2015-05-09 刘太华
事件调度器模块 记录下我们游戏里事件调度器模块, 用处, 代码结构。 我们用来注册一些事件到调度器, 调度器在做update的时候, 会检查容器内的事件, 事件的封装, 包含senderObj, receiveObj, id, delayFrameCount等等。 如果当前帧已经符合delayFrameCount的要求了, 就执行receiveObj.RecieveEvent()方法,将senderObj注册事件时的参数等, 带入RecieveEvent方法执行。 继续阅读 »
2015-04-08 AllanChan
iOS GCD 基础名词解析: 串行与并行 串行和并行都是相对于队列而言的 -队列(负责调度任务) 串行队列:一个接一个的调度任务 并发队列:可以同时调度多个任务 同步与异步 串行与并行针对的是队列,而同步与异步,针对的则是线程。 最大的区别在于,同步线程要阻塞当前线程,必须要等待同步线程中的任务执行完,返回以后,才能继续执行下一任务;而异步线程则是不用等待。 仅凭这几句话还是很难理解,所以可以多准备几个案例,边分析边理解。 继续阅读 »
2014-04-28 刘太华
这里记录的是现在所在游戏的cpp代码里的, 关于事件调度和触发的源码分析. EventDispatcher 是一个事件调度者 Event 事件基类 EventReceiver 所有需要接收世界的对象的基类, 它们都对EventReceiver做继承. 并重写RecieveEvent方法. 继续阅读 »
2016-07-27 Klaus Ma
很高兴参加这次活动,之前我一直从事分布式计算;从硕士阶段就开始在做分布式资源的调度及优化这一块,当时是基于Globus做跨机群的资源调度。毕业时加入了百度,后来进入了Platform Computing公司;Platform Computing是一家有着20多年分布式经验的公司;2012年Platform Computing被IBM收购,现在做为IBM一个子部门继续从事分布式相关的工作。凭借我们在分布式方面非常丰富的经验,我们在与分布式相关的开源项目都有比较多的贡献,这次主要讲与Mesos, Kubernetes,Swarm相关,还有其它团队在做Spark相关的项目。我会介绍一下Kubernetes和Swarm与Mesos的集成;比 继续阅读 »
2016-11-07 ruki
tbox内部的所有io操作都是原生支持协程的,可以在线程和协程间任意切换,内置基于轮询的io调度器(epoll, kqueue等,后续还会支持iocp). 我们在socket操作的时候,只需要像平常顺序编程那样操作就可以实现异步并发收发数据。 这里先给个简答的文件服务器的例子,可参考下,代码非常简单: 文件接收服务器 这个文件服务器的功能很简单,就是不停的接收连接,然后开新协程,进行文件传输。 通过协程,从原始socket写起,也只需要不到100行代码,就可以实现一个高并发的文件服务器。 此处用到了tb_socket_sendf直接对文件句柄操作,发送到socket,内部使用sendfile实现,不需要再上层开buffe 继续阅读 »