• golang server端的epoll


    最近工作中是有网络方面的需求,在这里写一些golang网络server端的一些内容。还是有诸多的点没有想明白;

    1)一个server端的例子;

    2)epoll,每当有数据的时候就会有这么一个事件么,都是有事件的,这里就是fd的驱动,这里就是fd的驱动,为什么fd忽悠

    fd上如果是注册了poll函数,一个关键点,socket都是有等待队列的,然后自己就是等待队列的客户之一

    什么叫做socket上有数据来了。当然

    现在还是有两个地方不是非常清楚;

    1)对于接受到的数据,在socket层面是个什么摆放的格式,数据结构是什么?

    2)对于epoll机制的消息通知,是说有数据来了就通知,如果不同的fd有不同的数据获取的方式;比如,如果是监听的fd的话,那么他就应该是用accpt去获取数据,如果是普通的链接,那么就通过recvfrom去获取数据。

    3)通知有数据是怎么通知的?来了一个字节也也去通知的吗?拿肯定是读完了之后,肯定是socket记录了,用户态读了多少的数据出来,这个时候如果用户没有全部都读全,那么还是会触发一个事件过来吗?肯定不会啊,因为用户知道了上面有数据之后,肯定是一个while循环去读了,直到把所有的数据全部都耗尽为止。如果从驱动侧新来了数据,那么数据仍然是OK的,这完全是一个异步的过程,可能用户前一次已经把数据都消费完了,也都说不定。

  • 相关阅读:
    《仔仔细细分析Ext》 第N2章 GridPanel的小难点 第一节 每条数据后面跟随几个操作按钮
    TextField输入验证
    Ext.FormPanel 及控件横排显示
    备份
    重写
    this关键字
    TestCircle程序分析
    java方法重载
    static关键字
    super关键字
  • 原文地址:https://www.cnblogs.com/honpey/p/14613268.html
Copyright © 2020-2023  润新知