C#异步和多线程的区别
C#中的异步和多线程有以下区别:
1. 线程本质上是进程中一段并发运行的代码,需要操作系统投入CPU资源来运行和调度。而异步操作无须额外的线程负担,其操作无须消耗CPU时间的I/O操作。
2. 多线程是顺序执行,编程简单。但是线程的使用(滥用)会给系统带来上下文切换的额外负担,并且线程间的共享变量可能造成死锁的出现。而异步操作的处理函数可以不必使用共享变量,因此不会出现死锁问题。
3. 异步操作的复杂程度较高,程序调用与普通人的思维方式有些出入,而且难以调试。而多线程的编程模式相对简单。
4. 异步是目的,而多线程是实现这个目的的方法。异步是指,A发起一个操作后(一般都是比较耗时的操作),可以继续处理它自己的事儿,不用干等着这个耗时操作返回。
5. 当需要执行I/O操作时,使用异步操作更合适。I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及.net Remoting等跨进程的调用。 而线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。
标签: #科技数码
郑重声明:图文由自媒体作者发布,我们尊重原作版权,但因数量庞大无法逐一核实,图片与文字所有方如有疑问可与我们联系,核实后我们将予以删除。