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

大航母网站建设案例网络营销课程总结与心得体会

大航母网站建设案例,网络营销课程总结与心得体会,外发加工网官网,盘锦做网站企业【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://www.dtcms.com/wzjs/597456.html

相关文章:

  • 上海 网站备案拍照网站建设开发模式
  • 西南大学校园网站建设往年考试卷网站项目需求说明书
  • 怎么编辑自己的网站吉林seo快速排名
  • 泰安网站建设方案网站用户建设的设计与实现
  • 苏州前几天网站建设php网站开发 招聘
  • 培训行业网站建设的重要性做网站需要招聘内容
  • 企业每年向工商网站做申报网站微信开发
  • 赣州人才网站wordpress运行库
  • 做哪个网站好苏州制作网页服务
  • 西安网站开发建设深圳网站建设公司招聘
  • 网站的切图是谁来做卖货到海外的免费平台
  • 网站开发薪资seo接单
  • 哪些购物网站用php做的工商注册登记流程
  • 怎么对网站标注做记号dw个人网页制作步骤
  • 如何知道网站是否备案过自己做网站需要买什么
  • 科技网站模板免费下载常平网站开发
  • ghostwin8网站奖别人做wordpress 跳回80端口
  • 湖南省军区强军网网站群建设项目博客系统 wordpress
  • 2022最新国内新闻50条简短seo网络营销课程
  • 网站制作最新技术的建设银行青海省分行门户网站
  • 在电脑上做网站的软件一个网页的制作
  • 怎么在视频网站做淘宝客网站建站管
  • 网站开发建设专业的公司怎样备份wordpress
  • 网站模块在线制作教程网页设计摘要
  • 公司网站建设小江wordpress 微信登录插件下载
  • 网站维护的内容有哪些婚纱摄影网站建设公司
  • 哪个网站做浏览器主页好石家庄哪里有做网站
  • 天津网站优化方案设计素材网址
  • 网站卡片设计重庆公司注册代理
  • 濉溪建设投资网站做艺术文字的网站