摘要: APM(异步编程模型)支持三种聚集技巧:等待直至完成,轮询和方法回调。下面我们先来看看等待直至完成聚集(wait-until-done)技巧:我们为了启动一个异步操作,我们可以调用一些BeginXXXfangfa。所有这些方法都会将请求操作排队,然后返回一个IAsyncResult对象来标识挂起的操作。为了获取操作的结果,我们可以以IAsyncResult对象为参数调用相应的EndXXX方法。根据记录,所有的EndXXX方法都可以接受一个IAsyncResult作为它的一个参数。我们可以看一个EndRead方法:Int32 EndRead(IAsyncResult asyncResult)注意 阅读全文
posted @ 2013-06-05 08:41 shenyuc 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 当字段声明中含有 volatile 修饰符时,该声明引入的字段为易失字段。由于采用了优化技术(它会重新安排指令的执行顺序),在多线程的程序运行环境下,如果不采取同步(如由 lock 语句所提供的)控制手段,则对于非易失字段的访问可能会导致意外的和不可预见的结果。这些优化可以由编译器、运行时系统或硬件执行。但是,对于易失字段,优化时的这种重新排序必须遵循以下规则:读取一个易失字段称为易失读取。易失读取具有“获取语义”;也就是说,按照指令序列,所有排在易失读取之后的对内存的引用,在执行时也一定排在它的后面。写入一个易失字段称为易失写入。易失写入具有“释放语义”;也就是说,按照指令序列,所有排在易失 阅读全文
posted @ 2013-06-04 09:49 shenyuc 阅读(314) 评论(0) 推荐(0) 编辑
摘要: FCL中提供了三个定时器,而对于大多数程序员来说,他们不太清楚这三个定时器之间的区别。 下面我们对这三个定时器进行分析: System.Threading的Timer类,这个定时器使我们最常用的定时器,当我们希望在另一个线程上定时执行后台任务时,这个定时器是最好的选择。 System.Windows.Forms的Timer类 构建一个该类的实例可以告诉Windows将定时器与调用线程关联。随着定时器的触发,Windows将一个定时器消息(WM_TIMER)插入到线程的消息队列中。调用线程必须执行一个消息泵(message pump),从而提取消息,并将他们分派到期望的回调方法中。注意,所有这些 阅读全文
posted @ 2013-06-03 09:36 shenyuc 阅读(652) 评论(0) 推荐(1) 编辑