![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
muduo源码剖析
详细讲解陈硕的muduo网络库
潇湘夜雨~
不积跬步,无以至千里
展开
-
【muduo】base篇---ThreadPool
一、线程池简介 线程池本质上也是生产者消费者问题:生产者线程向任务队列添加任务,消费者线程(在线程队列中)从任务队列取出任务去执行。二、ThreadPool线程池ThreadPool用到了前面分析的Thread、MutexLock、Condition。ThreadPool可以设置工作线程的数量,并向任务队列放入任务。放入到任务队列中的任务将由某个工作...原创 2020-03-27 18:59:18 · 302 阅读 · 1 评论 -
【muduo】base库之 BlockingQueue和BounderBlockingQueue
一、生产者---消费者模型无界缓冲区与有界缓冲区的封装,本质就是生产者---消费者模型。生产者消费者模型一般有两种实现方式,可以利用信号量也可以利用条件变量实现,muduo库采用条件变量实现。 有界缓冲区是指生产者在向仓库添加数据时要先判断仓库是否已满,如果已满则通知消费者来取走数据;消费者在消费时,先判断仓库是否已空,如果是则通知生产者生产数据。 在无界缓冲...原创 2020-03-27 11:57:41 · 208 阅读 · 0 评论 -
【muduo】base库之 Thread
一、基础知识POSIX线程(英语:POSIX Threads,常被缩写为Pthreads)是POSIX 的线程标准,定义了创建和操纵线程的一套API。实现POSIX 线程标准的库常被称作Pthreads,一般用于Unix-likePOSIX 系统,如Linux、Solaris。它以pthread.h头文件和一个线程库实现。Pthreads API中大致共有100个函数调用,全都以"pthr...原创 2020-03-17 22:42:58 · 368 阅读 · 0 评论 -
【muduo】base库之 Types
一、类型转换C++中有四种强制类型转换操作符:static_cast:这个是最经常使用的类型转换。凡是C++隐式执行的类型转换都能够用static_cast显式完毕。在隐式转换时有时编译器会有警告信息。可是显示转换就不会有。static是指编译时,转型失败的话就不能编译。 const_cast:从名字能够看出和const有关,这个转换的作用是去除或加入const特性,它能够将一个cons...原创 2020-03-16 22:41:36 · 259 阅读 · 0 评论 -
【muduo】base库之 Atomic
什么是原子操作原子操作指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。任何要求多于一个函数调用的操作都不是原子操作,因为在两个函数调用之间,内核可能会临时挂起线程,执行其他的操作,当内核切换回当前线程时,之前的数据可能别修改,所以不能保证是原子操作。为什么需要原子操作C++中针对共享数据的存取在...原创 2020-03-15 22:57:31 · 519 阅读 · 0 评论