}
即竽暌姑户须要赓续地调用read,测验测验攫取socket中的数据,直到攫取成功后,才持续处理接收的数据。全部IO请求的过程中,固然用户线程每次提议IO请求后可以急速返回,然则为了比及数据,仍须要赓续地轮询、反复请求,消费了大年夜量的CPU的资本。一般很少直接应用这种模型,而是在其他IO模型中应用非浊宣IO这一特点。
process(buffer);
三、IO多路复竽暌姑
IO多路复竽暌姑模型是建立在内核供给的多路分别函数select基本之上的,应用select函数可以避免同步非浊宣IO模型中轮询等待的问题。

如图3所示,用户起首将须要进行IO操作的socket添加到select中,然后壅塞等待select体系调用返回。当数据达到时,socket被激活,select函数返回。用户线程正式提议read请求,攫取数据并持续履行。
大年夜流程上来看,应用select函数进行IO要乞降同步壅塞模型没有太大年夜的差别,甚至还多了添加监督socket,以及调用select函数的额外操作,效力更差。然则,应用select今后最大年夜的优势是用户可以在一个线程内同时处理多个socket的IO请求。用户可以注册多个socket,然后赓续地调用select攫取被激活的socket,即可达到在同一个线程内同时处理多个IO请求的目标。而在同步壅塞模型中,必须经由过程多线程的方法才能达到这个目标。
void UserEventHandler::handle_event() {
用户线程应用select函数的伪代码描述为:
{
select(socket);
while(1) {
sockets = select();
for(socket in sockets) {
if(can_read(socket)) {
read(socket, buffer);
}
推荐阅读
引言先坦白地说,有一段时光我无法真正懂得深度进修。我查看相干研究论文和文┞仿,感到深度进修异常复杂。我测验测验去懂得神经收集及其变体,但依然认为艰苦。接着有一天,我决定一步一>>>详细阅读
本文标题:高性能IO模型浅析
地址:http://www.17bianji.com/lsqh/36095.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示