2016-07-18 ruki
最近在xmake中,用lua的协程实现了多任务编译,效果还是不错的,不过后来发现一个问题: 如果所有编译进程都在处理编译,没有退出的时候,xmake的lua主进程会不断地在这些任务间,不停的切换轮询进程的状态,但是有没有机会执行其他任务,导致cpu过高,抢占了编译进程的cpu时间。。 那如果在等不到完成的进程时候,加入sleep等待呢,又会导致编译速度变慢,没法合理利用cpu。。 因此,为了解决这个问题,我打算扩展下lua的接口,实现了一个跨平台的多进程等待接口: process.waitlist 实现多个未完成进程的同时等待,让出xmake主进程的cpu时间,给其他编译进程充分利用 xmake中的lua代码如下: ``` 继续阅读 »
2016-08-29 ruki
新特性 增加同时等待多个进程接口 增加uuid生成器 增加hash库模块 添加__tb_deprecated__关键字以及配置选项 改进 移动部分utils接口到hash模块 重写random生成器 Bugs修复 修复stdout在vs2015以上版本的兼容性问题 修复进程参数长度限制 继续阅读 »
2014-06-15 veryyoung
一.实验名称:银行家算法 二.实验目的: 银行家算法是避免死锁的一种重要方法,通过编写 一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 三.实验原理说明: 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。    银行家算法是由操作系统执行,每当一个进程请求资源。算法由拒绝或延期的请求,如果它确定接受该请求可以把系统处于不安全状态(即一个可能发生死锁)来避免死锁。当一个新进程进入一个系统,它必须声明它可能曾经声称每 继续阅读 »
2015-08-27 Li Shuai
同步IO Linux IO的两阶段 同步, 异步, 阻塞, 非阻塞, 是网络IO中经常被提到的概念, 刚接触Tornado服务器的时候也知道Tornado是异步非阻塞的高性能web服务器, 直到最近看了一些资料才对同步异步的概念有了一些自己的想法。 HTTP协议是构建在TCP协议上的, TCP通信的底层本质上是socket的IO, 在Linux上, 以读socket为例, 数据首先到达的是内核缓冲区, 其次才会从内核缓冲区拷贝到用户进程, 所以负责通信的进程去读写socket的时候(也即recvfrom调用), 一般是两个阶段: 等待数据准备好, 此时数据暂存在内核缓冲区 数据准备好, 从内核缓冲区拷贝到用户进程 以上的两阶 继续阅读 »