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

如何做好网站建设销售百度开户

如何做好网站建设销售,百度开户,郑州建站多少钱,推广下载app赚钱预备知识 文件描述符file descriptor 文件描述符是Linux系统中对文件、套接字等I/O资源的抽象,每个打开的文件或套接字都有一个唯一的文件描述符。应用程序可以使用文件描述符来读写文件或进行网络通信。 epoll允许程序监控多个文件描述符,以便在这些…

预备知识

文件描述符file descriptor

文件描述符是Linux系统中对文件、套接字等I/O资源的抽象,每个打开的文件或套接字都有一个唯一的文件描述符。应用程序可以使用文件描述符来读写文件或进行网络通信。

epoll允许程序监控多个文件描述符,以便在这些描述符中的任何一个上发生I/O事件时进行处理。在epoll中,文件描述符通常被标记为“可读”、“可写”或“就绪”状态

就绪=可读 并且 可写。这种状态通常在使用epoll的边缘触发模式时使用,它只会通知程序发生了状态改变的文件描述符,而不是所有可读或可写的文件描述符。

套接字socket

定义:套接字通常指的是网络套接字,它包括一个IP地址和一个端口号,用于标识网络上的一台计算机上的一个进程。可以用于在不同进程之间传输数据,无论这些进程在同一台计算机上还是在不同的计算机上

方法:在套接字通信中,一个进程可以创建一个套接字,并将其绑定到一个IP地址和端口号上。然后它可以通过这个套接字向另一个套接字发送数据,或者从另一个套接字接收数据。

例:Web浏览器使用套接字向Web服务器请求网页,邮件客户端使用套接字向邮件服务器发送和接收电子邮件。

分类:阻塞与非阻塞socket

  • 阻塞: 当试图对该文件描述符进行读写时,如果当时没有数据可读,或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。
  • 非阻塞: 如果没有数据可读,或者不可写,读写函数马上返回,而不会等待。

epoll机制

(21条消息) 多路复用机制_坠金的博客-CSDN博客

epoll

epoll工作模式:

  • 边缘触发只会通知程序发生了状态改变的文件描述符
  • 水平触发会一直通知程序文件描述符可读或可写,直到程序明确地告诉内核它不再关注该文件描述符。

区别:

  • 前者会在文件描述符就绪状态下一直通知应用程序进行I/O操作
  • 后者仅在从未就绪状态转换为就绪状态时通知应用程序进行I/O操作。

应用:

需要注意的是,使用 level triggered 模式可能会增加应用程序的负载,因为内核需要不断地向应用程序发送通知,而使用 edge triggered 模式可以更高效地利用 CPU 资源。因此,在一般情况下,推荐使用 edge triggered 模式,因为它能更高效地处理事件。

然而,在以下几种情况下,使用 level triggered 可能更为合适:

  • 数据库或磁盘操作较慢的情况下,使用 edge triggered 模式可能会出现事件丢失的情况,而 level triggered 模式可以持续不断地通知应用程序。
  • 在应用程序中使用了多个线程或进程,并且每个线程或进程都需要处理同一个文件描述符的情况下,使用 level triggered 模式会更方便管理。
  • 在使用 epoll 时,如果你不确定应该使用哪种模式,可以先使用 level triggered 模式进行测试,以确保应用程序正确处理了所有的事件。

epoll实例

epoll实例可以看作是一个事件集合,它包含多个事件。每个事件描述了一个文件描述符上的一种特定事件类型(例如,可读、可写、出错等等),以及当该事件发生时应该采取的操作。应用程序可以使用epoll实例来等待这些事件的发生,并且在它们发生时进行处理。

epoll句柄

当应用程序使用epoll时,它需要创建一个epoll句柄(epoll file descriptor),这个句柄类似于一个文件描述符,用于标识和操作epoll实例。

epoll事件注册函数

epoll提供了三个事件注册函数:epoll_create()、epoll_ctl()和epoll_wait()。

epoll_create()

创建一个epoll实例,返回一个文件描述符。

int epoll_create(int size)

其中size参数指定epoll实例支持的文件描述符数量

epoll_ctl()

将一个文件描述符添加到epoll实例的事件集合中,或者从事件集合中删除一个文件描述符。

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)

epfd参数是epoll实例的文件描述符,op参数指定操作类型(添加或删除),fd参数是要添加或删除的文件描述符,event参数描述要注册的事件类型和相关操作

epoll_wait()

等待文件描述符上的事件发生,返回所有发生事件的文件描述符。

int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)

与其他I/O多路复用技术相比,epoll机制具有更高的效率和更好的扩展性。因为epoll_wait()函数仅会返回就绪的文件描述符,而不会返回所有的文件描述符,从而减少了内核态和用户态之间的数据复制。而且,epoll机制允许应用程序一次性监视大量的文件描述符,因此可以有效地支持高并发的网络应用。

服务端使用epoll步骤

  1. 调用epoll_create函数在Linux内核中创建一个事件表;
  2. 然后将文件描述符(监听套接字listener)添加到所创建的事件表中;
  3. 在主循环中,调用epoll_wait等待返回就绪的文件描述符集合;
  4. 分别处理就绪的事件集合,本项目中一共有两类事件:新用户连接事件和用户发来消息事件(epoll还有很多其他事件,本项目为简洁明了,不介绍)。
http://www.shuangfujiaoyu.com/news/63071.html

相关文章:

  • 企业网站推广的方法有?整站优化价格
  • 网站做sem推广时要注意什么代做seo关键词排名
  • 腾讯云做网站干什么用如何免费注册一个网站
  • wordpress如何换图片不显示不出来seo搜索引擎优化推荐
  • 数字市场wordpress主题优化电脑的软件有哪些
  • 苏州招聘网站建设山东关键词快速排名
  • office网站开发常州百度推广公司
  • 找做cad彩拼的网站广告公司收费价格表
  • 那个网站做网编好深圳seo专家
  • api接口开放平台seo谷歌外贸推广
  • 网站权重对优化的作用千锋教育培训机构地址
  • 深圳网站seo设计360优化大师最新版下载
  • 厦门网站建设合同昆明百度推广优化
  • 网站seo是什么意管理系统
  • 1688成品网站源码下载推广的软件
  • 做招聘网站没有数据打开全网搜索
  • 哪些女性网站做女性慈善事业怎么推广自己的微信号
  • 免费咨询律师的电话是多少合肥seo推广培训班
  • 工信部网站备案批准文件莆田关键词优化报价
  • 易语言开发网站关于进一步优化落实疫情防控措施
  • h5网站设计东莞seo顾问
  • 公安部网站备案系统搜索引擎推广排名
  • 上海网站建设300seo计费系统
  • web网站建设一题库产品软文模板
  • 成人高考在哪里报名汕头seo推广优化
  • 制作灯笼的手工做法幼儿园seo兼职平台
  • 江苏又一地出现疫情关键词优化价格
  • 备案名称和网站名称近几年的网络营销案例
  • 做农产品网站江门网站定制多少钱
  • 做创意网站长沙官网seo分析