当前位置: 首页 > news >正文

四川网络科技有限公司seo兼职优化

四川网络科技有限公司,seo兼职优化,用什么程序做视频网站,wordpress 体育主题Linux learning note 1、epoll的使用场景2、epoll的使用方法和内部原理2.1、创建epoll2.2、使用epoll监听和处理事件 3、示例 1、epoll的使用场景 epoll的英文全称是extend poll#xff0c;顾名思义是poll的升级版。常见的IO复用技术有select#xff0c;poll#xff0c;epo… Linux learning note 1、epoll的使用场景2、epoll的使用方法和内部原理2.1、创建epoll2.2、使用epoll监听和处理事件 3、示例 1、epoll的使用场景 epoll的英文全称是extend poll顾名思义是poll的升级版。常见的IO复用技术有selectpollepoll三种本文只介绍epoll。 这里IO多路复用通俗理解是指用一个线程来管理多个输入/输出通道。具体到网络场景中就是希望服务器只用一个线程就可以处理N个客户端的读写请求。 如果不适用IO多路复用技术我们当然也可以实现一个服务端和N个客户端之间建立连接但由于read函数经常被设置为阻塞式的所以出现这么一种情况服务器阻塞在客户端1的通道上而当客户端2发送消息时便无法及时处理。 当然read函数也可以设置为非阻塞式的不断的扫描哪个客户端发送消息不过这样就很浪费CPU资源了。 总而言之epoll在网络通信中几乎是必不可少的一项技术。 2、epoll的使用方法和内部原理 先概况性的讲epoll是一个管理服务端和多个客户端的工具当这些设备有“动作”的时候epoll会通过中断察觉到这些“动作”并及时去处理。 具体原理如下 2.1、创建epoll 使用epoll_create()函数创建一个eventpoll的结构体该结构体又嵌套着许多数据结构用以维护epoll管理的多个服务器和客户端。其中较为重要的是一个存放服务器和所有客户端的文件描述符的红黑树和一个管理就绪事件的双向链表ready list。 值得注意的是epoll_create()只是创建eventpoll这么一个数据结构具体红黑树中的节点的添加和删除需要依靠epoll_ctl()函数来完成。而epoll_ctl()不仅仅添加需要监控的文件描述符还要添加一个名为epoll_event的结构体我们可以通过该结构体设置我们需要监听的事件和触发中断的方式。 监听的事件和触发中断的方式都是通过设置epoll_event中的events这个成员变量来完成的常规的设置有 struct event_poll ev; ev.events EPOLLIN; //设置监听读事件如果没有设置触发方式则默认使用水平触发 //or ev.events EPOLLIN | EPOLLET; //设置监听读事件且边缘触发水平触发level triggered当事件发生之后一直产生中断提醒CPU去处理。这也是默认的触发方式。边缘触发edge triggered当事件发生之后只触发一次中断。 2.2、使用epoll监听和处理事件 这部分就相对简单许多了无非是在while循环中使用一个epoll_wait()去监听哪一个设备有需要处理的事件。其中epoll_wait()时常被设置成阻塞性函数即没有事件需要处理的时候就一直阻塞在那。如果有事件需要处理CPU会把该事件对应的文件描述符放进ready_list然后通过epoll_wait()函数再将ready_list中的文件描述符对应的设备的事件信息等依次放入epoll_event的队列中来。最后在通过对epoll_event中的文件描述符或事件类型的判断去决定执行具体的任务。 可能有点难理解那再看看代码把。 struct epoll_event events[1024]; int epollfd epoll_create(1); /*** A lot of code is omitted here ***/ while(true) {int nfds epoll_wait(epollfd, events, 1024, -1);for (int n 0; n nfds; n) {if (events[n].events EPOLLIN) //去处理一个个事件{/******/}} }3、示例 该例子完成了一个服务器对多个客户端的连接请求的监控以及对可读事件的回应。 #include sys/epoll.h #include netinet/in.h #include unistd.h #include stdio.h #include string.h #include stdlib.h #include errno.h #include fcntl.h #include iostream#define MAX_EVENTS 10 #define READ_SIZE 1024int server_port 8888;int main() {struct epoll_event ev, events[MAX_EVENTS];struct sockaddr_in addr;char buffer[READ_SIZE];int listen_sock socket(AF_INET, SOCK_STREAM, 0);memset(addr, 0, sizeof(addr));addr.sin_family AF_INET;addr.sin_addr.s_addr INADDR_ANY;addr.sin_port htons(server_port);bind(listen_sock, (struct sockaddr*) addr, sizeof(addr));listen(listen_sock, 5);int epollfd epoll_create(1);ev.events EPOLLIN; ev.data.fd listen_sock;epoll_ctl(epollfd, EPOLL_CTL_ADD, listen_sock, ev);int nfds; while(true) {nfds epoll_wait(epollfd, events, MAX_EVENTS, -1);for (int n 0; n nfds; n) {if (events[n].data.fd listen_sock) {int con_sock accept(listen_sock, (struct sockaddr *) NULL, NULL);ev.events EPOLLIN | EPOLLET;ev.data.fd con_sock;epoll_ctl(epollfd, EPOLL_CTL_ADD, con_sock, ev);std::cout add a new client suessfully! std::endl;} else {if (events[n].events EPOLLIN) {int len read(events[n].data.fd, buffer, sizeof(buffer));if(len 0){std::cout server receive is: buffer std::endl;static std::string send_str;send_str.append(receive suessfully!);write(events[n].data.fd, send_str.c_str(), send_str.length());memset(buffer, 0 , sizeof(buffer));send_str.erase(0);} }}}}close(listen_sock);return 0; }
http://www.w-s-a.com/news/354309/

相关文章:

  • 房地产网站建设策划方案网站建设教程简笔画
  • 3d室内设计软件wordpress本地优化加速版
  • 南京高新区规划建设局网站石家庄哪里做网站比较好
  • 免费培训课程网站优化的方式
  • 做网站要固定电话在家自己做网站
  • 招聘网站开发视频新手如何做网站维护
  • flash 网站欣赏国外做的比较好的网站有哪些
  • 推广一个网站需要什么官网首页设计
  • 淘宝建设网站的理由企业官网建设哪家好
  • 青岛网站推wordpress主题切换
  • 天元建设集团有限公司资质郑州网站seo推广
  • 免费网站后台管理系统模板下载百度网盘app下载安装
  • 开封网站建设培训郑州高端网站建设哪家好
  • 东莞哪家做网站很有名的公司即墨专业医院网站制作公司
  • 做面食网站china cd wordpress
  • 门户网站 营销优秀建筑模型案例作品
  • 训做网站的心得体会范文中山市 有限公司网站建设
  • 服装电子商务网站建设过程与实现两学一做学习教育网站
  • 住房和城建设网站怎么用源码建站
  • 监理工程师证查询网站百度关键词优化软件网站
  • 关于建筑建设的网站asp网站建设报告书
  • 服务二级公司网站建设平台销售模式有哪些
  • 南昌县建设局网站微信分销小程序开发
  • 网站设计师需要什么知识与技能wordpress个性
  • 做茶叶网站的目的和规划有什么做照片书的网站
  • 开福区城乡建设局门户网站关键词挖掘查询工具爱站网
  • 网站建设全国排名沈阳seo按天计费
  • 成都公司网站设计无锡seo网站推广费用
  • 建网站平台要多少钱购物网站界面设计策划
  • 学完js了可以做哪些网站长沙建站官网