摘要:
Handler+Runnable模式我们先看一个并不是异步线程加载的例子,使用 Handler+Runnable模式。这里为何不是新开线程的原因请参看这篇文章:Android Runnable 运行在那个线程 这里的代码其实是在UI 主线程中下载图片的,而不是新开线程。我们运行下面代码时,会发现他其实是阻塞了整个界面的显示,需要所有图片都加载完成后,才能显示界面。 1 package ghj1976.AndroidTest; 2 3 import java.io.IOException; 4 import java.net.URL; 5 import android.app.Activity. 阅读全文
摘要:
引子WRK是微软于 2006 年针对教育和学术界开放的Windows内核的部分源码,WRK(Windows Research Kernel)也就是Windows研究内核,在WRK中不仅仅只提供了Windows内核模块的部分代码,其还提供了编译工具,也就是通过这个编译工具,你可以将你的WRK编译成一个EXE文件,也就是内核可执行模块,然后你可以利用这个EXE文件来取代操作系统本身的内核,这样的话,下次开机的时候操作系统所加载的内核就是您编译的那个EXE了。工具软件Intel x86 CPU;VMware 6.5;Windows Server 2003 SP1(用于测试 WRK 编译结果);Win 阅读全文
摘要:
完成端口程序的执行步骤:1) 创建一个完成端口。第四个参数保持为0,指定在完成端口上,每个处理器一次只允许执行一个工作者线程。2) 判断系统内到底安装了多少个处理器。3) 创建工作者线程,根据步骤2 )得到的处理器信息,在完成端口上,为已完成的I / O请求提供服务。在这个简单的例子中,我们为每个处理器都只创建一个工作者线程。这是由于事先已预计到,到时不会有任何线程进入“挂起”状态,造成由于线程数量的不足,而使处理器空闲的局面(没有足够的线程可供执行)。调用C r e a t e T h r e a d函数时,必须同时提供一个工作者例程,由线程在创建好执行。本节稍后还会详细讨论线程的职责。4) 阅读全文
摘要:
异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为普遍采用的技术。这种技术使得IO设备在需要得到 服务时,能够产生一个硬件中断,迫使CPU放弃目前的处理任务,进入特定的中断服务过程,中断服务完成后,再继续原先的处理。这样一来,IO设备和CPU 可以同时进行处理,从而避免了CPU等待I 阅读全文
摘要:
一、同步I/O和异步I/O在介绍这部分内容之前先来认识下“异步I/O”。说起异步IO,很容易联想到同步I/O,对于同一个I/O对象句柄在同一时刻只允许一个I/O操作,其原理如下图所示:显然,当内核真正处理I/O的时间段(T2~T4),用户线程是处于等待状态的,如果这个时间段比较段的话,没有什么影响;倘若这个时间段很长的话,线程就会长时间处于挂起状态。事实上,该线程完全可以利用这段时间用处理其他事务。异步I/O恰好可以解决同步I/O中的问题,而且支持对同一个I/O对象的并行处理,其原理如下图所示:异步I/O在I/O请求完成时,可以使用让I/O对象或者事件对象受信来通知用户线程,而用户线程中可以使 阅读全文