首页 > 编程知识 正文

同步io和异步io的实现,同步事件和异步事件

时间:2023-05-06 11:59:29 阅读:111283 作者:2931

同步(CPU在线程中执行代码的速度非常快,但如果发生I ) o操作(如读写文件或发送网络数据),则需要等待I ) o操作完成,然后才能继续。 在IO期间,CPU传输到其他线程执行。

如果发生异步I(I ) o操作,CPU只需发送I ) o命令,然后继续执行其它代码而不等待结果。 稍后,IO返回结果时,会通知CPU处理。

异步IO模型需要消息吉鲁。 在消息吉鲁普中,主线程重复“读取消息-处理消息”的过程。

消息模型曾应用于桌面APP应用程序。 GUI程序的主线程不断负责读取和处理消息。 所有键盘、鼠标等消息都发送到GUI程序的消息队列,并由GUI程序的主线程进行处理。

GUI线程处理键盘和鼠标等消息的速度非常快,因此用户不会感到延迟。 有时,GUI线程在处理一个消息的过程中出现问题,导致一次处理消息的时间过长,这时用户会觉得整个GUI程序都没有响应,敲击键盘、单击鼠标都没有反应。 这表明,在消息模型中,必须非常快速地处理一条消息。 否则,主线程将无法立即处理消息队列中的其他消息,程序似乎停止响应。

消息模型如何解决同步IO必须等待IO操作的问题呢? 发生IO操作时,代码只负责发布IO请求,不等待IO结果,直接结束本轮消息处理,进入下一个消息处理流程。 I/o操作完成后,将显示“I/o完成”消息,您可以在处理过程中直接获取I/o操作的结果。

从提交IO请求到接收IO完成,同步IO模型中的主线程只会挂起,而异步IO模型中的主线程不会休息,而是继续在消息吉鲁中处理其他消息。 这样,异步IO模型就可以在一个线程上同时处理多个IO请求,而无需切换线程。 在大多数IO密集型APP应用中,异步IO大大提高了系统的多任务处理能力。

自: https://blog.csdn.net/sunxiaopengsun/article/details/59482051

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。