11 2011 档案
摘要:APM是.NET中异步编程模型的缩写(Asynchronous Programing Model)。通过异步编程,使得我们的程序可以更加高效的利用系统资源。主要内容:一个APM的例子GUI中的APMAPM的优劣点AMP使用中的注意事项1. 一个APM的例子.Net中的异步模型非常完善,只要看到Begin***者End***方法。基本都是相对***方法的异步调用方式。(注:***是方法的名称)所以在.Net中实现一个异步调用是很方便的,下面用个小例子来演示一个异步操作。首先是同步的方式请求百度搜索10次。(分别搜索1,2,3。。。。10)public class CLRviaCSharp_21{
阅读全文
摘要:计时器在很多应用场景中广泛应用,System.Threading命名空间下,有个Timer类可以完成计时器的操作。下面来讨论下Timer类的使用及多个CPU内核同时运行线程时如何共享高速缓存(cache)的。主要内容:计时器的使用CPU高速缓存的伪共享1. 计时器的使用1.1 计时器的创建及改变设置计时器创建的API都类似,有以下5种:public Timer(TimerCallback callback);public Timer(TimerCallback callback, object state, int dueTime, int period);public Timer(Timer
阅读全文
摘要:除了上篇中提到的线程池,本篇介绍一种新的实现异步操作的方法--任务(Task)。主要内容:任务的介绍任务的基本应用子任务和任务工厂任务调度器并行任务Parallel1. 任务的介绍利用ThreadPool的QueueUserWorkItem方法建立的异步操作存在一些限制:异步操作没有返回值没有内建的机制来通知异步操作什么时候完成而使用任务(Task)来建立异步操作可以克服上述限制,同时还解决了其他一些问题。任务(Task)对象和线程池相比,多了很多状态字段和方法,便于更好的控制任务(Task)的运行。当然,任务(Task)提供大量的功能也是有代价的,意味着更多的内存消耗。所以在实际使用中,如果
阅读全文
摘要:利用线程池可以对线程进行有效的控制,使得线程能够更好的协作。在我们实际使用线程时,应当尽量使用线程池来构造线程,避免直接new一个线程。主要内容:控制资源消耗提高线程性能取消运行中的线程1. 控制资源消耗线程池(ThreadPool)启动线程的方法很简单,和上一篇直接new一个线程类似,也有带参数和不带参数两种。public static bool QueueUserWorkItem(WaitCallback callBack);public static bool QueueUserWorkItem(WaitCallback callBack, object state);其中的WaitCa
阅读全文