.Net中的异步编程
.Net中的异步编程?
.net中实现异步有两种方式:第一种是多线程的方式,第二种是使用异步函数,其实在异步函数中使用的还是多线程的技术。
异步编程中比较关注也比较重要的技术点在于:1、当异步线程在工作完成时如何通知调用线程;2、当异步线程出现异常的时候该如何处理;
3、异步线程工作的进度如何实时的通知调用线程;4、如何在调用线程中取消正在工作的异步线程,并进行回滚操作。
虽然在.net中提供了众多的异步编程模式,但是推荐最好使用Task类,因为Task类使用线程池中的任务线程,又由线程池管理,效率相对来说较高,而且Task类内部有比较好的机制,能让调用线程与任务进行交互。反正不管用哪种模式,总之尽量不要出现阻塞的情况,只要程序中出现线程阻塞,线程池就会创建新的活动线程,因为线程池总是要保证活动的任务线程数量与CPU的核数一致,它觉得这样性能最佳,当阻塞的线程恢复正常之后,线程池又会将多余的线程销毁,避免系统调度线程时频繁的进行上下文切换。这样的创建、销毁线程是非常的浪费系统资源影响性能的。而在线程同步的时候常常会出现阻塞的情况,所以能设计不用线程同步去解决问题,尽量不用线程同步。