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;
}

转载于:https://www.cnblogs.com/CZM-/p/5349924.html

5.2使用select,poll相关推荐

  1. java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)

    BIO blocking阻塞的意思,当我们在后端开发使用的时候,accetp 事件会阻塞主线程. 当accept事件执行的时候,客户的会和服务建立一个socket 连接.一般后端就会开启一个线程执行后 ...

  2. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

    一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 1 简单的启动线程语法 2 def run(na ...

  3. Linux下多路复用IO接口epoll/select/poll的区别

    select比epoll效率差的原因:select是轮询,epoll是触发式的,所以效率高. Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认 ...

  4. select poll使用

    select poll使用     2.1. 怎样管理多个连接? "我想同一时候监控一个以上的文件描写叙述符(fd)/连接(connection)/流(stream),应该怎么办?" ...

  5. python3 异步 非阻塞 IO多路复用 select poll epoll 使用

    有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理还是有必要的. 下面记录下分别基于Select/Poll/Epoll的echo ser ...

  6. select,poll,epoll区别面试常问

    select,poll,epoll区别: select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而pol ...

  7. select,poll,epoll区别。

    1,select的用法 fd_set fd_in, fd_out; struct timeval tv;// Reset the sets FD_ZERO( &fd_in ); FD_ZERO ...

  8. Linux下select, poll和epoll IO模型的详解

    http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...

  9. IO模型(select, poll, epoll的区别和原理)

    参考<unix网络编程> 参考http://blog.csdn.net/blueboy2000/article/details/4485874 参考http://blog.csdn.net ...

  10. IO多路复用:select/poll/epoll

    select int select (int maxfds,fd_set * readfds,fd_set * writefds,fd_set * errorfds,struct timeval* t ...

最新文章

  1. 算法:三种简单排序算法
  2. system函数-linux
  3. Vue002_计算属性和监视
  4. Asp.Net就业课堂之模板控件
  5. SAP Fiori Launchpad shell.handleGoHome() - home按钮的实现
  6. python打包成安装包_把 python 程序打包成 egg 或者 whl 安装包
  7. PHP_CodeIgniter _remap重新定义方法
  8. c语言程序设计的几种循环,C语言程序设计教案 第六章 循环程序设计.doc
  9. 乐视网:公司董事、总经理、财务总监张巍因个人原因辞职
  10. vi/Vim的快速使用
  11. python stdin和stdout_无法使用Python写入和读取stdin / stdout
  12. orm框架有哪些_.net core 基于Dapper 的分库分表开源框架(coredata)
  13. 阿里云助贫困大学生用技能点亮人生
  14. C++实现员工信息管理系统
  15. Mysql数据表关系与关联查询
  16. RESCRIPt:序列分类参考数据库管理工具
  17. 播布客老顽童MySQL DBA培训目录
  18. Android——RecyclerView——Recycler类全部源码翻译及注释
  19. LeetCode/LintCode 题解丨一周爆刷分治法:合并两棵二叉树
  20. WEB前端开发,认认真真学4个月能学到初级吗?

热门文章

  1. 项目后台运行关闭_iOS到底有没有必要上滑强制关闭APP?
  2. python mobilenetssd android_tensorflow+ssd_mobilenet实现目标检测的训练
  3. 服务器电源控制芯片,服务器电源中的PFC控制芯片HA16141的应用.pdf
  4. java 静态内部类 内部类_Java中内部类和静态内部类的区别
  5. 九大内置对象及四个域对象的总结
  6. mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍
  7. cvs数据导入工具 oracle_oracle数据库的导入导出
  8. 是以微型计算机为中心 配以相应的外围设备,______是以微型计算机为中心,配以相应的外围设备、电源和辅助电路,以及指挥微型计算机工作的系统软件而构成的。...
  9. echarts 雷达图_【带着canvas去流浪】绘制雷达图
  10. JAVA使用bean配置ftp_FTP文件上传(By)java