打开计算器显示屏会显示光标,在键盘左上角有SHIFT键,在SHIFT键打开后会在显示屏的左上角看到有一个黑色小框里面是S,是SHIFT键被触发后的标志即可。
先问题引概括两机制区别联系介绍每接口用、问题引 联系区别
问题引需要读两I/O候使用阻塞式I/O能间阻塞描述符面另外描述符虽数据能读实性能满足要求概解决案几种:
1使用进程或者线程种造程序复杂且与进程与线程创建维护需要销(Apache服务器用进程式优点隔离用户)
2用进程使用非阻塞I/O读取数据I/O读候立刻返检查否读种形式循环轮询(polling)种比较浪费CPU间数间读仍花费间断反复执行read系统调用
3异步I/O(asynchronous I/O)描述符准备候用信号告诉进程由于信号数限描述符适用
4种较式I/O路转接(I/O multiplexing)(貌似翻译路复用)先构造张关描述符列表(epoll队列)调用函数直些描述符准备才返返告诉进程哪些I/O绪selectepoll两机制都路I/O机制解决案selectPOSIX标准epollLinux所特
区别(epoll相select优点)主要三:
1select句柄数目受限linux/posix_typesh文件声明:#define __FD_SETSIZE 1024 表示select同监听1024fdepoll没限制打文件句柄数目
2epoll处随着FD数目增降低效率selec采用轮询处理其数据结构类似数组数据结构epoll维护队列直接看队列空epoll"跃"socket进行 *** 作---内核实现epoll根据每fd面callback函数实现"跃"socket才主调用 callback函数(句柄加入队列)其idle状态句柄则点epoll实现"伪"AIO绝部I/O都跃每I/O端口使用率高epoll效率定比select高(能要维护队列复杂)
3使用mmap加速内核与用户空间消息传递论select,pollepoll都需要内核FD消息通知给用户空间何避免必要内存拷贝重要点epoll通内核于用户空间mmap同块内存实现
二、接口
1)select
1 int select(int maxfdp1, fd_set restrict readfds, fd_set restrict writefds, fd_set restrict exceptfds, struct timeval restrict tvptr);
struct timeval{
long tv_sec;
long tv_usec;
}
三种情况:tvptr == NULL 永远等待;tvptr->tv_sec == 0 && tvptr->tv_usec == 0 完全等待;等于0候等待间select三指针都空候select提供种比sleep更精确定器注意select第参数maxfdp1并描述符数描述符加1起限制作用防止错二给内核轮询候提供届提高效率select返-1表示错0表示超返值所已经准备描述符数(同描述符读写都准备结影响+2)
2int FD_ISSET(int fd, fd_set fdset); fd描述符集合非0否则返0
3int FD_CLR(int fd, fd_set fd_set); int FD_SET(int fd, fd_set fdset) ;int FD_ZERO(fd_set fdset);
用段linux manFD_ZERO() clears a setFD_SET() and FD_CLR() respectively add and remove a given file descriptor from a set FD_ISSET() tests to see if a file descriptor is part of the set; this is useful after select() returns几函数与描述符01没关系添加删除检测描述符否set
2)epoll
1int epoll_create(int size);
创建epoll句柄size用告诉内核监听数目共参数同于select()第参数给监听fd+1值需要注意创建epoll句柄占用fd值linux查看/proc/进程id/fd/能够看fd所使用完epoll必须调用close()关闭否则能导致fd耗尽
2 int epoll_ctl(int epfd, int op, int fd, struct epoll_event event);
epoll事件注册函数同与select()监听事件告诉内核要监听类型事件先注册要监听事件类型第参数epoll_create()返值第二参数表示作用三宏表示:
EPOLL_CTL_ADD:注册新fdepfd;
EPOLL_CTL_MOD:修改已经注册fd监听事件;
EPOLL_CTL_DEL:epfd删除fd;
第三参数需要监听fd第四参数告诉内核需要监听事struct epoll_event结构:
struct epoll_event {
__uint32_t events; / Epoll events /
epoll_data_t data; / User data variable /
};
events几宏集合:
EPOLLIN :表示应文件描述符读(包括端SOCKET关闭);
EPOLLOUT:表示应文件描述符写;
EPOLLPRI:表示应文件描述符紧急数据读(应该表示带外数据);
EPOLLERR:表示应文件描述符发错误;
EPOLLHUP:表示应文件描述符挂断;
EPOLLET: EPOLL设边缘触发(Edge Triggered)模式相于水平触发(Level Triggered)说
EPOLLONESHOT:监听事件监听完事件需要继续监听socket需要再socket加入EPOLL队列
关于epoll工作模式ETLT
LT(level triggered)缺省工作式并且同支持blockno-block socket种做内核告诉文件描述符否绪绪fd进行IO *** 作作任何 *** 作内核继续通知所种模式编程错误能性要点传统select/poll都种模型代表.
ET (edge-triggered)高速工作式支持no-block socket种模式描述符未绪变绪内核通epoll告诉假设知道文件描述符已经绪并且再文件描述符发送更绪通知直做某些 *** 作导致文件描述符再绪状态请注意直fd作IO *** 作(导致再变未绪)内核发送更通知(only once)
3 int epoll_wait(int epfd, struct epoll_event events, int maxevents, int timeout)
等待事件产类似于select()调用参数events用内核事件集合maxevents告内核eventsmaxevents值能于创建epoll_create()size参数timeout超间(毫秒0立即返-1永久阻塞)该函数返需要处理事件数目返0表示已超
请采纳支持联通4G网络
1、HuAWElTlT一TL00也就是华为畅享5
2、网络类型:双卡(均可支持4G),全网通
3、
4G网络:移动
TD-LTE,联通TD-LTE,联通FDD-LTE,电信TD-LTE,电信FDD-LTE
4、3G网络:移动3G(TD-SCDMA),联通3G(WCDMA),电信3G(CDMA2000),联通2G/移动2G(GSM)
5、
WLAN功能:WIFI,IEEE
80211
b/g/n
6、导航:GPS导航,A-GPS技术
7、连接与共享:OTG,WLAN热点,蓝牙40
8、华为畅享5的双SIM卡槽均支持移动/联通/电信的4G网络,无需区分主副卡
9、华为畅享5的外观设计与之前畅享系列产品颇为相似,整体设计采用简洁风格,前后为塑料机身材质,背部后壳增加了磨砂条纹设计,机身三围1431×718×97毫米,重量约为160克。
10、正面 Android触控按键集成在屏幕中,配备的是5英寸
720P屏幕并搭载13GHz主频的联发科MT6735
处理器,辅以2GB运行内存以及16GB机身存储空间。
11、系统方面运行基于Android
51的
EMUIv31版本,拥有500万像前置+1300万像素后置的摄像头组合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)