webserver
文章平均质量分 85
qaaaaaaz
这个作者很懒,什么都没留下…
展开
-
struct iovec结构体使用
是一个I/O向量。是与readv和writev操作相关的结构体,readv和writev函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数称为散布读(scatter read)和聚集写(gather write)。原创 2023-08-03 17:30:17 · 173 阅读 · 0 评论 -
在项目中使用spdlog输出日志并且二次封装成单例异步模式
spdlog是一个高性能的C++日志库,支持跨平台,兼容C++11,是一款轻量级日志文件, header-only。可以支持多线程、异步、可以将日志输出到控制台或者文件里面。原创 2023-07-24 18:12:24 · 2185 阅读 · 3 评论 -
Webserver项目之Reactor和Proactor模式
主线程只负责监听文件描述符上是否有事件发生,如果有事件发生就将该事件通知工作线程处理,将读写事件放到任务队列。读写数据、接受新的连接和处理客户请求都是在工作线程中完成。(epoll 注册事件是指在 epoll 中注册一个文件描述符,以便在该文件描述符上发生事件时,内核能够通知应用程序)原创 2023-04-04 20:41:08 · 221 阅读 · 0 评论 -
WebServer项目之I/O模型、同步异步、Epoll与select和poll对比
因为ET模式,当有数据时,只会被触发一次,所以每次读取数据时,一定要一次性把数据读取完(必须等到它们返回EWOULDBLOCK(确保所有数据都已读完或写完),所以我们需要设置一个whlie循环read数据,但如果read是阻塞模式,那么如果没有数据时,将会阻塞,导致程序卡死。poll使用链表来描述;也会使进程阻塞(也可以设置成为非阻塞),但是和阻塞I/O不一样,I/O复用可以阻塞多个I/O操作,同时可以对多个读操作、写操作进行检测(可以同时监听多个文件描述符),直到有数据的时候才真正调用 I/O操作。原创 2023-04-03 22:12:08 · 373 阅读 · 0 评论