12 2012 档案
C# 线程知识--异步编程模型(APM)
摘要:在构建高性能、可伸缩的应用程序时,必定会采用异步操作来提升应用程序性能,改善用户体验,异步操作与线程池结合允许使用很少的线程执行许多的操作。CLR中提供了一种异步操作的模式即异步编程模式。 1.异步编程模型简介 异步编程模式中的方法都是采用BeginXxx方法开始执行异步操作和EndXxx方法结束异步操作。BeginXxx方法都接受一个AsyncCallback委托类型的回调函数和回调函数需要使用的一个object类型的数据对象以及其他的一些操作参数,并且该方法会返回一个实现了IAsyncResult接口类型对象,EndXxx方法都接受一个IAsyncResult接口的类... 阅读全文
posted @ 2012-12-25 21:57 pengstone 阅读(3075) 评论(1) 推荐(4)
C# 线程知识--使用Task执行异步操作
摘要:在C#4.0之前需要执行一个复杂的异步操作时,只能使用CLR线程池技术来执行一个任务。线程池执行异步任务时,不知道任务何时完成,以及任务的在任务完成后不能获取到返回值。但是在C#4.0中引人了一个的任务(System.Threading.Tasks命名空间的类型)机制来解决异步操作完成时间和完成后返回值的问题。 1.使用Task类创建并执行简单任务 通过使用Task的构造函数来创建任务,并调用Start方法来启动任务并执行异步操作。创建任务时,必须传递一个Action或Action<Object>类型的委托回调方法,可以选择的传递任务执行时说需要的数据对象等。Task类... 阅读全文
posted @ 2012-12-23 20:49 pengstone 阅读(40385) 评论(7) 推荐(12)
C# 线程知识--使用ThreadPool执行异步操作
摘要:在应用程序中有许多复杂的任务,对于这些任务可能需要使用一个或多个工作线程或I/O线程来协作处理,比如:定时任务、数据库数据操作、web服务、文件的处理等。这些任务可能会非常耗费时间,为了是用户界面能及时响应,就会启用一个其他线程来并行处理任务。线程的创建和销毁操作是非常昂贵的,过多的线程会带来内存资源的消耗以及操作系统调度可执行线程并执行上下文切换导致的时间消耗,所以过多线程会损坏应用程序的性能。如果创建过的线程能反复使用就能解决上面的一些问题,因此,CLR使用了线程池来管理线程。 1. 线程池基础 每个CLR 拥有一个线程池,这个线程池由CLR控制的APPDom... 阅读全文
posted @ 2012-12-18 21:05 pengstone 阅读(5502) 评论(0) 推荐(1)
C# 线程知识--Thread
摘要:1.线程基础知识 进程是应用程序运行时的一个实例,它包含:一个内核对象,Windows 操作系统用他来管理进程;一个地址空间,包含所有程序集可执行代码和数据以及对线程堆栈和堆的内存分配。进程拥有自己的属性以及调度优先级,当系统创建一个进程时,会自动创建一个主线程来执行进程地址空间里面的代码,主线程可以创建多个子线程。进程地址空间中的代码没有任何线程执行时,系统就会终止进程和释放地址空间。每个进程至少有一个或多个线程,每个线程都有自己的一个执行上下文环境即一组 CPU 寄存器和堆栈,多个运行线程都在进程的地址空间中同时执行代码,系统会采用轮询的方式为每个线程分配CPU时间片,线程之间就... 阅读全文
posted @ 2012-12-13 22:56 pengstone 阅读(3922) 评论(0) 推荐(2)