• select,epoll的比较


    机制:

    select:只支持水平触发(数据不处理完无限通知)

    epoll:支持水平触发和边缘触发(仅通知一次)

    单进程监控FD个数

    select: 由FD_SETSIZE设置,默认值是2048。在大量连接的情况下明显不足。

    epoll: 和内存有关,1G内存10W个,一般都够用。

    内核监控事件的策略

    select: 顺序遍历监控句柄数组,在监控大量连接句柄且数据通信非活跃状态下效率低下。

    epoll: 活跃的句柄通过callback函数进行事件自主通知,资源消耗过小;

    程序中获取事件句柄的方式

    select: 返回整个监控句柄数组,只能顺序遍历查找里面有事件触发的句柄

    epoll: 返回的数组就是所有已经触发事件的句柄。

    数据传递

    select: 内核态和用户态之间的数据传递需要进行copy

    epoll: mmap映射数据空间,免去copy操作

  • 相关阅读:
    C#Redis哈希Hashes
    C#Redis集合set
    C#Redis列表List
    C#Redis字符串
    入门redis
    C#/Net代码精简优化技巧
    单点登录在asp.net中的简单实现
    sql注入
    数据库sql优化
    常常忘记但是很重要的sql语句
  • 原文地址:https://www.cnblogs.com/hdflzh/p/4034848.html
Copyright © 2020-2023  润新知