您的位置:首页 > 其它

异步和多线程的关系

2016-07-14 16:03 197 查看
异步:为了压榨CPU的处理能力,避免阻塞,CPU不去等待比较耗时的IO或者其他耗时的非计算密集型的操作,使得CPU可以自顾自个的去处理事情。IO操作完成之后会回调或者CPU主动获取结果,然后处理接下来的操作。举个例子,CPU发出烧水指令,让电热壶(其他硬件)去烧水,CPU然后去干其他事,并没有等待水烧开之后再去干其他事情,当电热壶把水烧开之后通知CPU或者CPU会监控电热壶水是否烧开,然后CPU把烧开的水倒入杯子

多线程:多线程也是为了压榨CPU的处理能力,多线程没有回调,一件事情多个线程并发的去处理,充分利用CPU多核的资源,举个例子,CPU要修一段100米的路,CPU有4个工程队,CPU发送指令,第一工程队去修0-25米,第二队去修25-50米,第三队去修50-75米,第四对去修75-100米,四个队公用一台压路机,压路机就是独占性资源,所以每个队在用的时候其他队不能使用,但是可以去干其他事,四个队是并发的去修路

异步优缺点:异步操作无需额外的线程负担,主要使用回调的方式进行处理,如果设计的充分好的情况下,处理函数不必要使用共享变量,避免的死锁的可能。但是异步操作编写比较复杂,尤其是回调机制,与正常理解不一致,不容易理解,难于调试

多线程优缺点:多线程按顺序执行,符合正常人的理解,变成简单。但是多线程直接的线程切换比较消耗CPU的资源,并且如果存在争用的资源,可能产生死锁

使用环境:异步比较适合IO操作,如数据库读取、读写文件、网络读写、RPC等。多线程比较适合大规模的计算,比如图形图像处理、复杂算法

多线程和异步的关系:从辩证的角度上看,异步是目的,多线程是其中的一个手段,多线程可以实现异步,异步是当一个调用者的请求发送给被调动者后不需要等待被调用者返回的结果,这个调用者可以是一个线程处理操作也可以是进程处理操作

异步有时候需要一个普通线程,有时候需要系统的异步调用功能,但是有限异步的IO操作未必需要一个线程来运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程