![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
muduo源码笔记
w小鸣
这个作者很懒,什么都没留下…
展开
-
muduo源码笔记-base-ThreadPool
1. ThreadPoolThreadPool类是线程池的封装。muduo中采用了blocking queue实现的任务队列,并且启动数量固定的线程池。每个线程在while(running)的循环中不断的从队列中取任务,做任务。任务都是从ThreadPool中的run函数加进来的。class ThreadPool : noncopyable{ public: // 任务即要执行的函数 ...原创 2020-03-18 23:56:07 · 144 阅读 · 0 评论 -
muduo源码-base-Thread
1. Thread.hThread类是对线程的封装,指定了线程状态,要运行的任务(函数),名字,id等信息。调用start()->创建线程->构建ThreadData对象->传入任务->运行。class Thread : noncopyable{ public: // 指定thread运行函数类型 typedef std::function<vo...原创 2020-03-18 22:52:13 · 224 阅读 · 0 评论 -
muduo源码笔记-base-Mutex
1. MutexLock类MutexLock类是对互斥量的封装,使用栈上对象MutexLockGuard来管理mutex的加锁与释放。栈上对象在退出对应的代码段之后会自动释放,随之,锁也会被自动释放。使用方法如下:class Foo{public: int size() const;private: mutable MutexLock mutex_; std::v...原创 2020-03-18 22:44:11 · 148 阅读 · 0 评论 -
muduo源码笔记-base-Atomic
Atomic.hAtomic是对整数 int 原子性操作的一个封装。使用了gcc原子性操作,效率比普通加锁要高。这里主要是使用了三个函数:(1) 原子自增操作将ptr加上value,并返回ptr原来的值type __sync_fetch_and_add(type *ptr, type value)(2) 原子和比较操作如果*ptr的值与oldval的值相等,则设置为newval,并返...原创 2020-03-16 22:27:52 · 189 阅读 · 0 评论 -
muduo源码笔记-base-Timestamp
1. Timestamp.h 文件Timestamp表示的是UTC时间,最小可表示微秒(us)。数据成员microSecondsSinceEpoch_使用int64_t(long long)表示对象,因此作者建议将此值按值传递,这样可以直接存放在寄存器中,提高访问速度。#ifndef MUDUO_BASE_TIMESTAMP_H#define MUDUO_BASE_TIMESTAMP_H...原创 2020-03-16 21:28:10 · 161 阅读 · 0 评论