并发概览
- 并发
一次不止完成一件事 - 多线程
一种采用多个执行线程的并发形式
多线程是一种并发形式,但并非唯一的形式。
– 并行处理
将大量的工作划分到多个并发运行的线程中,从而处理这些工作。
通过多线程最大化地利永多个处理器核心。
并行处理是一种多线程形式,而多线程是一种并发形式。在现代应用程序中,还有一种重要的并发形式,那就是异步编程。
– 异步编程
一种通过future或回调来规避多余线程的并发形式。
future(或promise)是一种类型,代表了某种会在将来完成的操作。.net中的现代future类型有Task和Task<TResult>。比较老的异步API使用的是回调或事件,而非future。异步编程的核心思想是异步操作,某个操作已经开始,但一段时间后才会完成。虽然该操作已在执行中,但它并不会阻塞原来的线程,而且启动该操作的线程依旧可以自由地进行其他操作。当该操作完成时,它便告知相关future,或者调用其回调或事件,让应用程序知晓该操作已经完成了。
异步编程是一种强大的并发形式,现代编程语言对async和awati的支持,使异步编程几乎变得和同步(非并发)编程一样简单。
– 响应式编程
一种声明式编程,其中应用程序会对事件做出响应