阻塞非阻塞,同步异步io

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39133611/article/details/91588147

阻塞和非阻塞io区别:
阻塞IO:在发起一个系统调用时,例如网络io或者文件io时,调用线程是阻塞等待直到内核空间将所需数据准备好并且copy到用户空间。
非阻塞IO:发起系统调用时,调用线程不会阻塞在用户空间,此时调用线程可以处理其他的事情通常通过IO多路复用实现如selector,poll,epoll等,通过注册不同的channel来处理不同的多个请求,从而达到提高并发性能。但是同步的非阻塞模式需要不停的轮训来判断是否数据是否准备好。而异步的io模式则不需要轮训,数据准备好后会发送一个通知,或者可以监听事件。发起系统调用后直接返回,数据准备好后,通过注册的handle函数来处理数据。
所以同步和异步的区别就在于调用之后调用线程是否需要通过轮训来获取数据状态,而异步直接返回,数据准备好之后直接调用handle函数处理即可。

展开阅读全文

没有更多推荐了,返回首页