zoukankan      html  css  js  c++  java
  • Unp高级i/o复用技术 读书笔记 (v0.3)

    Unp-高级i/o复用技术 读书笔记

     

    话说unpV2书上没有epoll,所以老师专门补充了此章节。

    更新:由于ppt 使用 发送到 word...图片都很小。。下次记着调大图片。

    clip_image002

    clip_image004

    第一阶级:要点:epoll的特点:事件的增量添加,删除。触发条件。..

    clip_image006


    Todo(google):   如果有poll epoll 函数,的函数对比就好啦。

    clip_image008

    clip_image010

    66第一阶级:ctl看起来是event(生命周期)。下图中,看好 函数指针和events

    clip_image012

    clip_image014

    66epollin…让我联想到 android .init.c4个对列,里有pollevent类型,还有oneshot 属性

    第一阶级:几大类,有in/out…..Pri(带外数据)....read/writenorm,band)主要的看下下个ppt

    clip_image016

    clip_image018

    clip_image020 

    66:要点2epoll_wait

    clip_image022 

    clip_image024

    3.epoll 客户端:create…registerEvent… waitEvent…

    clip_image026

    注:常规的传输:sin.read…socket.write…; 否则socket.shutdown…

    clip_image028

    第二种情况;(todo,不懂),sock.read…sock.write…为何客户端维持sock.read?

    clip_image030

     

    		ep.create();
    		events[0].events = EPOLLIN;
    		events[0].data.fd = fileno(stdin);
    		ep.registerEvent(fileno(stdin), events[0]);
    		events[0].data.fd = sock.getFd();
    		ep.registerEvent(sock.getFd(), events[0]);
    
    		while (true)
    		{
    			int ret, length;
    			ret = ep.waitEvent(events, 2, -1);
    
    		for (int i = 0; i < ret; ++i)
    		{
    		    if (events[i].data.fd == fileno(stdin))
    		    {
    		if ((length = sin.read(sbuf, BUFFER_SIZE)) == 0) {
    			sock.shutdown();
    			ep.unregisterEvent(events[i].data.fd);
    		       }
    			else
    			    length = sock.write(sbuf, length);
    		    }
    		else if (events[i].data.fd == sock.getFd())
    		{
    	if ((length = sock.read(rbuf, BUFFER_SIZE)) == 0) {
    			ep.unregisterEvent(events[i].data.fd);
    			goto BREAK;
    		    }
    		    length = sout.write(rbuf, length);
    		}
    		else
    		    throw EXCEPTION();
    	}
    }
    

    重点:epoll服务器()

    clip_image032

     

    [todo.不懂]第一阶级读码;waitevent… accept… socket.insert…. registerEvent..

                   [??]循环中,内外的意义?

    clip_image034

     

    clip_image036

     

  • 相关阅读:
    为什么JSP的内置对象不需要声明
    什么不能输?
    可采用两种方法得到一个EJB对象
    EJB
    J2EE之JPA
    Application、Activity Stack 和 Task的区别
    关于 android屏幕适配
    JSP 向 JavaScript 中传递数组
    Android 图片异步加载 加载网络图片
    Android 显示意图和隐式意图的区别
  • 原文地址:https://www.cnblogs.com/titer1/p/2004414.html
Copyright © 2011-2022 走看看