遇有交通阻塞情况应如何处理?
根据国务院第405号令《中华人民共和国道路交通安全法实施条例》规定,机动车遇有前方交叉路口交通阻塞时,应当依次停在路口以外等候,不得进入路口。机动车在遇有前方机动车停车排队等候或者缓慢行驶时,应当依次排队,不得从前方车辆两侧穿插或者超越行驶,不得在人行横道、网状线区域内停车等候。机动车在车道减少的路口、路段,遇有前方机动车停车排队等候或者缓慢行驶的,应当每车道一辆依次交替驶入车道减少后的路口、路段。
阻塞IO和非阻塞IO,主要区别在于第一个阶段。也即是阻塞IO,在套接字缓冲区没准备好的情况下,会一直等待。而非阻塞IO,在套接字缓冲区没准备好时,会立即返回。
获取IO数据,分为两个阶段,一是套接字缓冲区准备阶段;二是数据拷贝阶段(内核将数据从socket缓冲区拷贝到用户空间)。套接字的默认状态是阻塞的,但是有两种方式改变阻塞标志。一种是直接设置套接字为非阻塞,另一种是在方法中设置阻塞标记。
总结
在非阻塞IO下,用户程序通过轮询方式不断的查询,引起CPU占用率高(内核态和用户态的切换)。
所以一般将非阻塞IO和IO多路复用技术select、poll等搭配使用(其实select、poll也是不断的轮询多个socket,不过是在内核态)。
这种方式,极大的提高了程序的健壮性和稳定性,是Linux下高性能网络编程的首选。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!