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; }
转载于:https://www.cnblogs.com/CZM-/p/5349924.html
5.2使用select,poll相关推荐
- java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)
BIO blocking阻塞的意思,当我们在后端开发使用的时候,accetp 事件会阻塞主线程. 当accept事件执行的时候,客户的会和服务建立一个socket 连接.一般后端就会开启一个线程执行后 ...
- Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 1 简单的启动线程语法 2 def run(na ...
- Linux下多路复用IO接口epoll/select/poll的区别
select比epoll效率差的原因:select是轮询,epoll是触发式的,所以效率高. Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认 ...
- select poll使用
select poll使用 2.1. 怎样管理多个连接? "我想同一时候监控一个以上的文件描写叙述符(fd)/连接(connection)/流(stream),应该怎么办?" ...
- python3 异步 非阻塞 IO多路复用 select poll epoll 使用
有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理还是有必要的. 下面记录下分别基于Select/Poll/Epoll的echo ser ...
- select,poll,epoll区别面试常问
select,poll,epoll区别: select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而pol ...
- select,poll,epoll区别。
1,select的用法 fd_set fd_in, fd_out; struct timeval tv;// Reset the sets FD_ZERO( &fd_in ); FD_ZERO ...
- Linux下select, poll和epoll IO模型的详解
http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll 介绍 Epoll 可是当前在 Linux 下开发大规模并发网络程序的热 ...
- IO模型(select, poll, epoll的区别和原理)
参考<unix网络编程> 参考http://blog.csdn.net/blueboy2000/article/details/4485874 参考http://blog.csdn.net ...
- IO多路复用:select/poll/epoll
select int select (int maxfds,fd_set * readfds,fd_set * writefds,fd_set * errorfds,struct timeval* t ...
最新文章
- 算法:三种简单排序算法
- system函数-linux
- Vue002_计算属性和监视
- Asp.Net就业课堂之模板控件
- SAP Fiori Launchpad shell.handleGoHome() - home按钮的实现
- python打包成安装包_把 python 程序打包成 egg 或者 whl 安装包
- PHP_CodeIgniter _remap重新定义方法
- c语言程序设计的几种循环,C语言程序设计教案 第六章 循环程序设计.doc
- 乐视网:公司董事、总经理、财务总监张巍因个人原因辞职
- vi/Vim的快速使用
- python stdin和stdout_无法使用Python写入和读取stdin / stdout
- orm框架有哪些_.net core 基于Dapper 的分库分表开源框架(coredata)
- 阿里云助贫困大学生用技能点亮人生
- C++实现员工信息管理系统
- Mysql数据表关系与关联查询
- RESCRIPt:序列分类参考数据库管理工具
- 播布客老顽童MySQL DBA培训目录
- Android——RecyclerView——Recycler类全部源码翻译及注释
- LeetCode/LintCode 题解丨一周爆刷分治法:合并两棵二叉树
- WEB前端开发,认认真真学4个月能学到初级吗?
热门文章
- 项目后台运行关闭_iOS到底有没有必要上滑强制关闭APP?
- python mobilenetssd android_tensorflow+ssd_mobilenet实现目标检测的训练
- 服务器电源控制芯片,服务器电源中的PFC控制芯片HA16141的应用.pdf
- java 静态内部类 内部类_Java中内部类和静态内部类的区别
- 九大内置对象及四个域对象的总结
- mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍
- cvs数据导入工具 oracle_oracle数据库的导入导出
- 是以微型计算机为中心 配以相应的外围设备,______是以微型计算机为中心,配以相应的外围设备、电源和辅助电路,以及指挥微型计算机工作的系统软件而构成的。...
- echarts 雷达图_【带着canvas去流浪】绘制雷达图
- JAVA使用bean配置ftp_FTP文件上传(By)java