写点什么

epoll

0 人感兴趣 · 37 次引用

  • 最新
  • 推荐

c++ 实现一个 tcp 高性能网络服务器

要编写一个TCP高性能网络服务器,需要使用多线程技术、异步 IO 和 epoll。

写一个 epoll 的服务端程序

首先,epoll是一种事件驱动的I/O模型,它可以用来处理多个客户端连接。下面是一个简单的epoll服务端程序:

linux 环境下用 c 语言实现 reactor 网络模型的代码案例

下面是一个简单的例子,演示在 Linux 环境下使用 C 语言编写 Reactor 网络模型的代码。

https://static001.geekbang.org/infoq/7f/7fed8f1e6488ca0043391d1585251690.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

说透 IO 多路复用模型

用户头像
C++后台开发
2022-12-29

在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。来看一下系统定

https://static001.geekbang.org/infoq/c0/c0f00100f52e9f7686662a3acf8871f6.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

说透 IO 多路复用模型

在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。

IO 原理(二):多路复用

用户头像
苏格拉格拉
2022-11-16

从bio到nio多路复用、io模型(同步/异步、阻塞/非阻塞)、多路复用(select/poll/epoll)、Reactor(单/多Reactor、单/多线程)

https://static001.geekbang.org/infoq/3e/3e0a21e42c4daa234714419be524e41b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

epoll 的实现原理

用户头像
C++后台开发
2022-10-10

前言 本文以四个方面介绍epoll的实现原理, 1.epoll的数据结构; 2.协议栈如何与epoll通信; 3.epoll线程安全如何加锁; 4.ET与LT的实现。 (epoll实际上在500个以上效率就会比select还有poll高,书上说的是1024.)

对于 epoll 实现原理的理解

用户头像
C++后台开发
2022-09-22

Epoll是Linux IO的多路复用的机制,是select/poll的增强版本,在Linux内核fs/eventpoll.c中可以查看epoll的具体的实现。

高并发下的网络 IO 模型设计

用户头像
C++后台开发
2022-09-07

今天我们先聊一下高并发下的网络 IO 模型设计

深入聊聊 Linux 五种 IO 模型

用户头像
C++后台开发
2022-08-04

同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。

深入揭秘 epoll 是如何实现 IO 多路复用的

用户头像
C++后台开发
2022-07-18

进程在 Linux 上是一个开销不小的家伙,先不说创建,光是上下文切换一次就得几个微秒。所以为了高效地对海量用户提供服务,必须要让一个进程能同时处理很多个 tcp 连接才行。现在假设一个进程保持了 10000 条连接,那么如何发现哪条连接上有数据可读了、哪条

阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定

用户头像
C++后台开发
2022-06-23

关于IO会涉及到阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO等几个知识点。知识点虽然不难但平常经常容易搞混,特此Mark下,与君共勉。

彻底搞懂 select/poll/epoll,就这篇了!

用户头像
C++后台开发
2022-06-18

之前已经把网络 I/O 相关要点都盘了,还剩 select/poll/epoll 这几个区别没说,这篇就来搞搞它们,并且是从完全理解原理的角度来区分它们。

【高阶知识】用户态协议栈之 Epoll 实现原理

用户头像
C++后台开发
2022-06-08

Epoll 是 Linux IO 多路复用的管理机制。作为现在 Linux 平台高性能网络 IO 必要的组件。内核的实现可以参照:fs/eventpoll.c 。

一文弄懂 Linux 下五种 IO 模型

Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO)。 同步:调用端会一直等待服务端响应,直到返回结果。 异步:调用端发起调用之后不会立刻返回,不会等待服务端响应。服务端通过通知机制或者回

让人秒懂的 Redis 的事件处理机制

redis是单进程,单线程模型,与nginx的多进程不同,与golang的多协程也不同,“工作的工人”那么少,可那么为什么redis能这么快呢?

从 Linux 源码 看 Socket(TCP) 的 accept

用户头像
赖猫
2021-11-16

从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。

深入理解 Linux 的 epoll 机制及 epoll 原理

在 Linux 系统之中有一个核心武器:epoll 池,在高并发的,高吞吐的 IO 系统中常常见到 epoll 的身影。

https://static001.geekbang.org/infoq/a0/a08653dd3bcb2f2798024c2914e29a8a.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Asop 之 消息处理机制

Android 应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息队例中获取消息(Looper),然后对这些消息进行处理(Handler),这样就实现了通过消息来驱动应用程序的执行。

后端开发 -Reactor 设计模式

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,Proactor用于异步I/O操作。

2021 年第 26 周 ARTS 打卡

用户头像
Bryan
2021-07-04

ARTS 打卡:Algorithm-归并排序专题,Review-C10K问题,Tip-Redis,Share-epoll

通过实践带你揭开 TCP 中 CLOSE_WAIT 和 TIME_WAIT 的神秘面纱

用户头像
linux大本营
2021-05-15

专注于服务器后台开发,包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等

epoll_epoll技术文章_InfoQ写作社区