zoukankan      html  css  js  c++  java
  • 5.2使用select,poll

    5.2 使用select,poll   // CPU占用率低,适用于很多简单场合

    参考:UNIX环境高级编程 I/O多路转接

    监测多个文件,只要有某一个文件可读/可写/异常或超时,即返回
    int select(int nfds,    fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);
                    最大文件句柄+1   被监测是否可读的文件                                         超时时间
                                                   被监测是否可写的文件
                                                                    被监测是否有异常的文件
       

    修改

    int AllInputDevicesInit(void)
    {
        PT_InputOpr ptTmp = g_ptInputOprHead;
        int iError = -1;
    
        FD_ZERO(&g_tRFds);
    
        while (ptTmp)
        {
            if (0 == ptTmp->DeviceInit())
            {
                FD_SET(ptTmp->iFd, &g_tRFds);
                if (g_iMaxFd < ptTmp->iFd)
                    g_iMaxFd = ptTmp->iFd;
                iError = 0;
            }
            ptTmp = ptTmp->ptNext;
        }
    
        g_iMaxFd++;
        return iError;
    }
    
    int GetInputEvent(PT_InputEvent ptInputEvent)
    {
        /* ÓÃselectº¯Êý¼à²âstdin,touchscreen 
            ÓÐÊý¾ÝʱÔÚÎÒµ÷ÓÃÏàÓ¦µÄGetInputEventº¯Êý»ò»ñµÃ¾ßÌåʱ¼ä
        */
        PT_InputOpr ptTmp = g_ptInputOprHead;
        fd_set tRFds;
        int iRet;
    
        tRFds = g_tRFds;
    
        iRet = select(g_iMaxFd, &tRFds, NULL, NULL, NULL);
        if (iRet > 0)
        {
            while (ptTmp)
            {
                if (FD_ISSET(ptTmp->iFd, &tRFds))
                {
                    if(0 == ptTmp->GetInputEvent(ptInputEvent))
                    {
                        return 0;
                    }
                }
                ptTmp = ptTmp->ptNext;
            }
        }
        return -1;
    }
  • 相关阅读:
    destroy-method="close"
    2.2 Spring的结构组成--Spring源码深度解析
    2.1 Spring容器的基本实现--Spring源码深度解析
    1.2 Spring环境搭建--Spring源码深度解析
    1.1 Spring的整体架构--Spring源码深度解析
    迟到的2016年计划
    spring学习 之helloworld
    从零实现DNN 探究梯度下降的原理
    Java注解——这些@圈圈都是个啥?
    自动发送日报,骗过你的领导^-^
  • 原文地址:https://www.cnblogs.com/CZM-/p/5349924.html
Copyright © 2011-2022 走看看