- 博客(4)
- 收藏
- 关注
原创 深入理解I/O多路复用:select、poll与epoll对比分析
通过单次系统调用监听多个文件描述符的状态变化当某个或多个文件描述符就绪(可读、可写或出现异常)时,系统调用返回应用程序可以非阻塞地处理这些就绪的文件描述符这种机制避免了为每个连接创建线程/进程的开销,同时解决了阻塞I/O模型无法处理多连接的问题。
2025-07-10 17:41:04
921
原创 一文看懂C++11的互斥锁、条件变量、原子变量
本文介绍了C++11多线程编程中的同步机制,主要包括互斥锁、条件变量和原子操作。在多线程环境中,由于CPU时间片切换、缓存不一致等问题,对共享变量的访问会造成数据竞争。C++11提供了std::mutex等多种互斥锁类型,以及std::lock_guard等RAII风格的锁管理类来避免死锁。条件变量(std::condition_variable)用于线程间高效同步,典型应用于生产者-消费者模型。原子操作(std::atomic)则通过硬件支持实现无锁编程,提供load、store等原子函数及6种内存顺序控
2025-07-08 12:34:22
1061
原创 Muduo、Boost.Asio、Nginx的区别
本文对比分析了三种高并发网络模型的设计原理与特点。Reactor模式采用事件驱动机制,通过单线程处理IO事件实现高效并发,Muduo库在此基础上发展为多Reactor多线程架构,主Reactor接收连接,子Reactor处理IO。Nginx采用多进程多Reactor模型,通过Master进程管理和Worker进程隔离实现高稳定性。Boost.Asio则采用Proactor模式,通过系统级异步IO实现更高效率。这三种模型各有侧重:Muduo强调控制权,Proactor注重业务逻辑简化,Nginx优先考虑稳定性
2025-07-07 14:39:46
976
原创 muduo网络库的同步非阻塞理解
《同步与异步IO模型及Muduo网络库实现分析》 文章分析了IO模型的核心概念,首先阐述了同步与异步的本质区别在于程序流控制权的归属:同步由调用方主动获取结果,异步则由被调用方反向通知。其次解释了阻塞与非阻塞的关键差异在于资源不可用时线程的行为:阻塞会释放CPU,非阻塞保持CPU占用。 在网络IO的两阶段模型中,详细说明了准备阶段和操作阶段的不同处理方式。重点介绍了Muduo网络库采用的同步非阻塞实现:通过epoll_wait主动获取事件就绪状态,所有socket设置为非阻塞模式,并处理EAGAIN情况。这
2025-07-07 11:25:04
849
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅