永发信息网

什么是同步IO和异步IO?

答案:1  悬赏:10  手机版
解决时间 2021-02-13 05:35
什么是同步IO和异步IO?
最佳答案
异步文件IO也就是重叠IO。
在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。
如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,CPU将会调度其他线程进行执行,如果没有其他线程需要执行的话,这段时间将会浪费掉(可能会调度操作系统的零页线程)。如果IO请求操作很快,用异步IO方式反而还低效,还不如用同步IO方式。
同步IO在同一时刻只允许一个IO操作,也就是说对于同一个文件句柄的IO操作是序列化的,即使使用两个线程也不能同时对同一个文件句柄同时发出读写操作。重叠IO允许一个或多个线程同时发出IO请求。
异步IO在请求完成时,通过将文件句柄设为有信号状态来通知应用程序,或者应用程序通过GetOverlappedResult察看IO请求是否完成,也可以通过一个事件对象来通知应用程序。
例如DeviceIoControl这个函数,他就可以通过参数指定是同步或异步,如果是同步的话,则该函数将会等待结果返回后,才执行下一条语句。如果是异步的话,DeviceIoControl调用后马上返回,如果参数正确,则回返回ERROR_IO_PENDING(忘了怎样写,不过肯定是有PENDING这个词),然后你可以通过GetOverlappedResult获取返回结果,是一个overlap结构,是在你调用DeviceIoControl的最后一个参数传进去的``
简单的说``同步在编程里,一般是指某个操作执行完后,才可以执行后面的操作``拿到IO上来说``就是我要做完这个IO操作``才继续后面的操作```
异步则是,我交带了某个操作给系统(可以是windows,也可以是你自己的库),我呆会过来拿,我现在要去忙别的``拿到IO上说``我交带了某个IO操作给系统。。。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
恒伟汽车信息咨询服务部地址在哪,我要去那里
临夏香酥童子鸡这个地址在什么地方,我要处理
我有四笔小额贷款,如果不还,他们有权利拍卖
宏大汽车贸易地址有知道的么?有点事想过去
48岁女性社会无业人员养老保险怎么交
河南文科考生590,超一本线28分,能上什么大
暴风魔镜的vr眼镜怎么样?
宏骏汽贸地址好找么,我有些事要过去
广创手机(兴贸精品店)在什么地方啊,我要过去
快吧里的gta4自由城之章怎么卸汉化补丁
鸿朋二手车市场地址好找么,我有些事要过去
作为城市规划术语,CBD的含义是()。A.经济开
避风塘休闲吧我想知道这个在什么地方
怎样把高跟鞋鞋底弄干净
女人到60岁还有性欲吗?
推荐资讯
中石化祥威工贸加油站地址好找么,我有些事要
最近不知道是怎么回事,打开一个网页老是出现
鸭蛋和饼干可以吃吗
品味轩时尚火锅地址在哪,我要去那里办事
涨紧轮漏油后果,大家对此有了解吗?
横县鑫辉机动车贸易有限公司地址在什么地方,
青岛哪里有哪里有古巴雪茄买批发市场
【求答.这个字是什么字?字是左右结构,左边是
阳新小莲庄旅社地址好找么,我有些事要过去
就在成都还是回家?我一个专科生,在成都,过
水果电池的铜片和锌片可以在哪里得到呢?
樱花卫浴在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?