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

大航母网站建设案例大航母网站建设流程

大航母网站建设案例,大航母网站建设流程,企业黄页名单,WordPress跳转提示【Linux】【网络】Reactor模式 1. Reactor 模式: Reactor 模式是一种事件驱动的设计模式,同步I/O通常用于设置Reactor 模式主线程(I/0处理单元,下同)只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑…

【Linux】【网络】Reactor模式

1. Reactor 模式:

Reactor 模式是一种事件驱动的设计模式,同步I/O通常用于设置Reactor 模式主线程(I/0处理单元,下同)只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元,下同)。除此之外,主线程不做任何其他实质性的工作。读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。
在这里插入图片描述
使用同步 I/O模型(以epoll_wait() 为例)实现的 Reactor 模式的工作流程是:
1)主线程往
epoll内核事件表
中注册socket 上的读就绪事件。(主线程循环等待监听连接套接字上的事件)
2)主线程调用epoll_wait 等待socket 上有数据可读。
3)当socket上有数据可读时,epoll_wait() 通知主线程。主线程则将socket 可读事件放入请求队列
4)睡眠在请求队列上的某个工作线程被唤醒,它从socket读取数据,并处理客户请求然后往epoll内核事件表中注册该socket上的就绪事件。
5)主线程调用epoll_wait() 等待 socket 可写。
6)当socket 可写时,epoll_wait()通知主线程。主线程将socket可写事件放入请求队列
7)睡眠在请求队列上的某个工作线程被唤醒,它往socket上写入服务器处理客户请求的结果。

工作流程:
  1. 主线程(Reactor)负责监听和接收事件

    • Reactor 线程等待 I/O 事件的发生(例如 socket 上的可读或可写事件),并通过事件循环处理。
    • 它使用 I/O 多路复用机制(如 epollselect)来监听多个事件源(例如多个 socket)。
  2. 注册事件

    • 主线程将事件(例如可读、可写、连接请求等)注册到 I/O 多路复用器(如 epollselect)。
    • 当事件发生时,I/O 多路复用器会通知 Reactor 线程。
  3. 事件分发

    • Reactor 线程通过事件分发机制,将事件分发到相应的 事件处理器
    • 每个事件(如连接请求、数据可读、数据可写等)都有对应的回调函数,Reactor 会调用这些回调来处理事件。
  4. 事件处理

    • 回调函数通常由工作线程或主线程执行,处理 I/O 操作(例如读数据、写数据、关闭连接等)。
示例:

Reactor 模式通常通过主线程驱动的事件循环来实现,在 libevent 中可以通过 event_base 来实现这个事件循环。

#include <event2/event.h>
#include <stdio.h>void on_event(evutil_socket_t fd, short what, void *arg) {printf("Event triggered on fd %d\n", fd);// 可以在此执行具体的 I/O 操作,如读取数据、写数据等
}int main() {struct event_base *base = event_base_new();struct event *ev;evutil_socket_t fd = 0; // 标准输入文件描述符ev = event_new(base, fd, EV_READ | EV_PERSIST, on_event, NULL);event_add(ev, NULL);  // 将事件加入事件循环event_base_dispatch(base);  // 启动事件循环,等待事件发生并处理event_free(ev);event_base_free(base);return 0;
}

PS:

  • Libevent 的本质是基于 事件驱动 的,它通过一个单线程的事件循环来处理回调函数,避免了频繁的线程切换和上下文切换,提高了效率。回调函数是在主线程的栈区执行的,这样可以避免创建额外线程的开销。但是某个回调函数阻塞可能会导致程序阻塞。
  • 而 modu 库 在此基础上加入了线程池,这样可以将回调的执行交给多个线程来处理,进一步提升了并发处理能力,尤其是当回调函数的操作比较耗时,或需要大量并发时。线程池的引入能够更好地分摊负载,并且避免了主线程被阻塞的风险。

把libevent实现写完会写一下modu库


文章转载自:

http://ZSd9mlGc.bkLkt.cn
http://3uYScSxq.bkLkt.cn
http://qjTJOjZe.bkLkt.cn
http://G64KgiZG.bkLkt.cn
http://viJIjPPT.bkLkt.cn
http://VYjYbhrI.bkLkt.cn
http://fqEywt61.bkLkt.cn
http://eVES0tUO.bkLkt.cn
http://GFTK2dim.bkLkt.cn
http://7F6h5ehw.bkLkt.cn
http://Kdg8REpA.bkLkt.cn
http://7YYg23al.bkLkt.cn
http://czqOjER3.bkLkt.cn
http://TLyVLt9Q.bkLkt.cn
http://k7qLySN2.bkLkt.cn
http://w7uV8frt.bkLkt.cn
http://av3rsjDA.bkLkt.cn
http://7P8S2JAE.bkLkt.cn
http://2TgXDPbN.bkLkt.cn
http://RFrZjV4R.bkLkt.cn
http://soxTfuCr.bkLkt.cn
http://zgHC1yAg.bkLkt.cn
http://07UmOxSg.bkLkt.cn
http://AM6rh1i3.bkLkt.cn
http://wHSzmL9C.bkLkt.cn
http://uzOlsRs9.bkLkt.cn
http://GbBzdpKz.bkLkt.cn
http://rTfRiRae.bkLkt.cn
http://KsvvKuIF.bkLkt.cn
http://vgQigHsz.bkLkt.cn
http://www.dtcms.com/wzjs/681117.html

相关文章:

  • 有哪些漫画做的好的网站好什么软件可以做动漫视频网站
  • 网络域名的网站网站建设超链接制作
  • 查询网站建设合肥有哪些公司是做网站的
  • 乾县住房和城乡建设局网站网站除了做流量还需要什么
  • 企业怎样做网站做视频网站技术壁垒在哪里
  • 重庆多功能网站建设网页打不开的两种解决方法
  • 网站界面设计实训的意义好的网站2020
  • 如何在百度搜到自己的网站自己开一个网站要多少钱
  • 电子商务网站的推广方式免费企业网站cms系统
  • 网站建设价格标准渠道wordpress禁止新建
  • 单位网站建设与管理工程项目信息查询
  • cpm广告联盟平台seo体系网站的建设及优化
  • 坊子营销型网站建设企业信息发布系统
  • 建设科技网络网站的意义和目的确定网站建设目的
  • 网站系统建设需要什么网站流量所需的成本.
  • 网站充值接口怎么做中国公司黄页
  • 网站链接推广老榕树网站建设教学
  • 织梦微电影分享网站织梦整站源码南宁南宁做网站
  • 汕头网站建设策划网站超市安装
  • 盐城整站优化推荐网站建设案例
  • 1688网站首页哈尔滨网站制作软件
  • 如果是创建的网站跨境电商网站建设方案
  • 网站 建设设计方案wordpress api文档下载
  • 外贸网站需要备案吗开发公司名字大全
  • 网站效果用什么软件做建筑工程有限公司
  • ui模板网站wordpress 定时发布 原理
  • 仿58同城分类信息网站源码同城的网站建设
  • 快速搭建网站前端做资源下载网站用什么工具
  • 招商网站建设自己怎么做公司网站
  • 厦门网站建设 孚珀科技可以做围棋题的网站