C#并发编程经典实例读后总结

首先对并发编程的理解:

  1. 并发即同时做多件事情,以服务器为例,响应第一个请求的同时响应第N(N>1)个请求。
  2. 并发多线程不是相同的概念,
    正确理解为 多线程就是采用多个线程执行程序,它是并发的一种表现形式,故以集合的概念来看,多线程包含于并发。
  3. 并行处理多线程以及并发的关系。
    并行处理就是把正在执行的大量的任务分割成小块,分配给多个同时运行的线程。也就是说 并行处理是 线程中的一种方式。 举个并行处理的例子:多核 CPU执行大量任务时,若只用一个核执行所有任务,而其他核保持空闲,这显然是不合理的。并行处理把任务分割成小块并分配给多个线程,让它们在不同的核上独立运行。
  4. 异步编程
    异步编程和线程一样是并发的一种表现形式。
    它的实现采用future模式或回调(callback)机制,以免产生不必要的线程。
    异步编程的核心理念是异步操作:启动了的操作将会在一段时间后完成。这个操作正在执行时,不会阻塞原来的线程。启动了这个操作的线程,可以继续执行其他任务。当
    操作完成时,会通知它的 future,或者调用回调函数,以便让程序知道操作已经结束。
    异步编程是一种功能强大的并发形式,但直至不久前,实现异步编程仍需要特别复杂的代码。VS2012 支持 async 和 await,这让异步编程变得几乎和同步(非并发)编程一样容易。
  5. 响应式编程
    响应式编程与异步编程非常类似,不过它是基于异步事件(asynchronous event)的,而不是异步操作(asynchronous operation)。
    响应式编程不一定是并发的,但它与并发编程联系紧密,因此本书介绍了响应式编程的基础知识。

异步编程详解:

不要用 void 作为 async 方法的返回类型!
async 方法可以返回 void,但是这仅限于编写事件处理程序。一个普通的 async 方法如果没有返回值,要返回Task,而不是 void。

一个 async 方法是由多个同步执行的程序块组成的,每个同步程序块之间由 await 语句分隔。

如果使用了 async,最好就一直使用它。

若想更全面地了解关于异步编程的知识,可参阅 Alex Davies(O’Reilly)编写的 Async in
C# 5.0,这本书非常不错。另外,微软公司有关异步编程的在线文档也很不错,建议你至
少读一读“async overview”和“Task-based Asynchronous Pattern(TAP) overview”这两篇。
如果要深入了解,官方 FAQ 和博客上也有大量的信息。

你可能感兴趣的:(c#,java)