异步,线程,并行概念
来源:互联网 发布:键盘美化软件下载 编辑:程序博客网 时间:2024/05/01 14:05
1.线程
线程是进程中某个单一顺序的控制流。也被称为轻量进程(lightweight processes).计算机科学术语,指运行中的程序的调度单位.
当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。以CAsyncSocket类为例(注意,CSocket从CAsyncSocket派生,但是其功能已经由异步转化为同步),当一个客户端通过调用Connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。这里提到执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。
2.并行
一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中.
3.异步
与同步相对应,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行。多线程将异步操作放入另一线程中运行,通过轮询或回调方法得到完成通知,但是完成端口,由操作系统接管异步操作的调度,通过硬件中断,在完成时触发回调方法,此方式不需要占用额外线程。
总结:C#异步与多线程的异同点
异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。
异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少 共享变量的数量),减少了死锁的可能。当然异步操作也并非完美无暇。编写异步操作的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些 出入,而且难以调试。当需要执行I/O操作时,使用异步操作比使用线程+同步 I/O操作更合适。
多线程中的处理程序依然是顺序执行,符合普通人的思维习惯,所以编程简单。但是多线程的缺点也同样明显,线程的使用(滥用)会给系统带来上下文切换的额外负担。并且线程间的共享变量可能造成死锁的出现。多线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。
0 0
- 异步,线程,并行概念
- 线程同步异步概念
- 并发、并行、同步、多线程、异步的概念
- GUI线程的异步并行设计
- JAVA并行异步编程线程池+FutureTask
- JAVA并行异步编程线程池+FutureTask
- 线程中同步、异步、串行、并行
- JAVA并行异步编程线程池+FutureTask
- 指令级并行,线程级并行,数据级并行区别?线程的概念是什么?
- 多线程相关的一些基础概念:同步、异步、并发、并行
- 线程的同步、异步、串行、并行的关系
- 线程 (并发 互斥 同步 并行 多线程 异步)
- JAVA并行异步编程,线程池+FutureTask+callable+ExecutorService
- gcd中同步异步并行串行线程数目的关系
- 异步与并行~CancellationTokenSource对线程的作用
- 并发和并行 进程和线程的概念
- 进程、线程、微线程、并发、并行、同步、异步、阻塞、非阻塞
- 【Java】【线程】概念:同步,异步,阻塞,非阻塞
- iOS开发中的小技巧
- linux下mysql默认安装目录和常用命令
- git 克隆远程仓库并创建分支、提交分支、获取分支
- HDU 5405 Sometimes Naive 2015多校联合训练赛#9 LCT 树链剖分
- 每天都好困的说
- 异步,线程,并行概念
- 再谈应用环境下的TIME_WAIT和CLOSE_WAIT
- Spark之WordCount
- Linux“自动备份/删除”MYSQL
- RHEL7 配置VNC远程桌面工具
- HDU 5402 Travelling Salesman Problem (2015 Multi-University Training Contest 9 2015多校联合)
- 基数排序之多关键字排序运用队列
- iOS开发 -- UIScrollView基本用法
- TCP/IP TIME_WAIT状态原理