
网络
文章平均质量分 94
网络
TravisBytes
行走江湖,我有一剑!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
突破单核瓶颈:多核协程调度策略
首先,我们来看一下当前的单线程协程调度器的关键实现。以下是核心数据结构和线程局部存储的定义。// 其他成员...通过上述设计和实现,您可以构建一个高效的多核协程调度器,充分利用多核处理器的性能优势。关键在于合理设计调度器的架构、优化任务窃取和负载均衡算法、确保线程安全和高效的并发处理。随着调度器的不断优化和完善,它将能够支持大规模、高并发的协程应用场景。协程调度器的设计与实现:状态管理与高效调度的技术细节-优快云C 语言的协程探秘-优快云。原创 2024-12-25 16:51:22 · 1190 阅读 · 0 评论 -
深入浅出:用 Hook 技术拦截和扩展系统调用
想象一下,你正在一家餐厅用餐,菜单已经固定了所有的菜品。突然,你有了一个绝妙的想法,想在每道菜中加入一点点特殊的调料,而无需改变厨师的烹饪流程。Hook 机制就像是这样的调料,让你可以在程序的特定位置插入自定义的代码,扩展或改变程序的功能,而无需修改原有的代码。首先,我们定义了与原始socket和recv这些函数指针将用于存储原始函数的地址。socketrecv。原创 2024-12-24 15:13:23 · 2097 阅读 · 0 评论 -
协程调度器的设计与实现:状态管理与高效调度的技术细节
红黑树用于高效地管理sleep和wait状态的协程,支持快速插入、删除和查找操作。就绪队列管理ready状态的协程,确保协程按照先进先出的顺序被调度执行。事件驱动机制(如epoll)用于监听和响应 I/O 事件,及时唤醒相关的协程。时间管理通过计算和比较唤醒时间,确保协程在合适的时间被唤醒并重新调度。这种设计使得调度器能够高效地处理大量协程的状态转换,确保协程在需要时被及时执行,同时避免资源浪费和竞争。原创 2024-12-18 20:45:00 · 3980 阅读 · 0 评论 -
高效异步:io_uring 技术解析
io_uring是 Linux 内核中的一种高效异步 I/O 框架,于 Linux 5.1 版本引入,旨在提高大规模并发 I/O 操作的性能。与传统的异步 I/O 接口(如epollselectpoll)相比,io_uring提供了更低的延迟和更高的吞吐量。原创 2024-08-29 10:59:30 · 2025 阅读 · 1 评论 -
深入剖析IOCP:从原理到实践
IOCP(Input/Output Completion Ports,输入/输出完成端口)是Windows操作系统中一种用于处理高效异步I/O操作的机制。它广泛应用于服务器端应用程序,如Web服务器和数据库服务器,能够有效处理大量的并发I/O请求。原创 2024-08-26 09:55:18 · 1737 阅读 · 0 评论 -
超越内核:DPDK与用户态Epoll
用户态 epoll 的实现,使用红黑树来管理事件和套接字。主要定义了事件类型、控制命令、数据结构和红黑树的相关操作。事件类型: 定义了多种 I/O 事件类型,包括输入、输出、紧急数据、错误和挂起等。EPOLLONESHOT 和 EPOLLET: 分别代表了“一次性”事件和“边缘触发”模式的标志位。原创 2024-08-22 14:07:47 · 1098 阅读 · 0 评论 -
探索DPDK:实现UDP接收与发送
然后,使用 rte_eth_dev_configure() 函数和之前定义的端口配置 port_conf_default 来配置全局变量 global_portid 指定的端口。如果没有可用的端口,函数会调用 rte_exit(),打印错误信息并退出程序。这里它指定队列索引为0,描述符数量为128,使用从 rte_eth_dev_socket_id() 获取的NUMA节点。调用rte_eth_dev_configure来设置端口参数,以及调用rte_eth_rx_queue_setup来设置接收队列。原创 2024-08-13 15:30:59 · 1261 阅读 · 0 评论 -
C 语言的协程探秘
库提供了一套功能丰富的 API,用于管理程序的执行上下文。这些功能主要用于实现用户空间的轻量级线程(协程),允许程序在多个执行流之间进行显式的上下文切换。虽然这些功能在新的 POSIX 标准中已被废弃,但它们在一些老系统和特定应用中仍然非常有用。在协程和主控制流之间来回切换,展示了基本的协程调度。原创 2024-08-04 16:23:08 · 698 阅读 · 0 评论 -
网络脉搏:UDP与TCP解码
UDP(用户数据报协议)和 TCP(传输控制协议)都是互联网协议套件中的核心传输层协议,它们各自有不同的特点和应用场景。原创 2024-07-31 22:36:43 · 1155 阅读 · 0 评论 -
网络编程的基石:POSIX API 与协议栈
标识套接字。包含套接字相关的信息,包括指向 TCB 的指针。存储连接状态、IP地址、端口号等关键信息。bind() 函数通过文件描述符查找套接字结构,然后将IP地址和端口号设置进去,最终在TCB中反映这些信息。这确保了在TCP连接建立和数据传输过程中使用正确的地址和端口。listen() 函数:将套接字的状态设置为 LISTEN,并创建一个连接请求队列。传输控制块(TCB):在调用 listen() 时,TCB 中的状态字段被更新为 LISTEN,表示该套接字正在监听传入的连接请求。原创 2024-07-30 23:42:20 · 1342 阅读 · 0 评论 -
并发之巅:事件驱动Reactor在高性能服务器的应用
Reactor 模式是一种事件驱动的设计模式,它通过管理事件而非管理 IO 操作来响应多个输入/输出请求。在这种模式中,应用程序不需要持续监控或直接处理 IO 操作,而是关注于发生的事件及其响应。这种方式使得应用程序能够高效地管理多个并发的输入/输出源,通过非阻塞的方式提高了系统整体的性能和响应能力。原创 2024-07-28 14:35:52 · 374 阅读 · 0 评论 -
高效网络I/O的秘诀:探索Select、Poll和Epoll的力量
网络I/O指的是在网络编程中,数据在网络中的输入与输出过程,主要涉及到数据的发送与接收。在Linux系统中,有几种常用的I/O模型,包括阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O和异步I/O。其中,I/O复用是非常关键的一种技术,它允许单个线程同时监视多个文件描述符,以检查一个或多个文件描述符是否就绪(即它们是否已准备好进行非阻塞性读或写操作)。 是最初UNIX系统支持的I/O多路复用接口。它允许程序监视多个文件描述符,等待直到一个或多个文件描述符就绪(可读、可写或异常),或者直到超时。优点:缺点原创 2024-07-25 17:04:33 · 1189 阅读 · 0 评论