Muduo
jacktangj
未来的你会感谢现在拼命的自己
展开
-
muduo库源码分析(4):线程类
与muduo线程类封装有关的源文件: Thread.cc Thread.h CurrentThread.hmuduo线程类封装实现方式: 基于对象的编程(利用boost::function/boost::bind实现)简化版的线程类封装可参考: http://blog.csdn.net/jacktangj/article/details/76166554muduo线程类整体结构:原创 2017-07-27 21:58:23 · 443 阅读 · 0 评论 -
Muduo库源码分析(5):互斥锁,条件变量类
互斥锁(muduo库简单的封装) 将muduo库的线程id的操作去除的简单版本// 出错处理#define MCHECK(ret) ({ __typeof__ (ret) errnum = (ret); assert(errnum == 0); (void) errnum;})class MutexLock : noncopyable{ public: MutexLock() {原创 2017-07-31 16:40:55 · 301 阅读 · 0 评论 -
Muduo库源码分析(7):线程池
线程池的本质 生产者与消费者模型,往线程池添加任务相当于生产者,从线程池取出任务相当于消费者,线程池容量相当于有界的缓冲区,所以实现类似于有界缓冲区class ThreadPool : noncopyable{ public: typedef std::function<void ()> Task; explicit ThreadPool(const string& nameArg =原创 2017-08-07 21:26:00 · 238 阅读 · 0 评论 -
Muduo库源码分析(8):单例模式实现
单例模式 保证一个类只有一个实例,并提供一个访问它的全局访问点参考资料 C++设计模式——单例模式: http://www.jellythink.com/archives/82Muduo库实现单例模式的思想: 通过pthread_once在多个线程中只会初始化一次的特性实现的线程安全的单例模式template<typename T>class Singleton : noncopyab原创 2017-08-07 21:51:01 · 320 阅读 · 0 评论 -
Muduo库源码分析(9):线程特定数据
线程私有数据 这些数据不会因为多进程共享数据而影响,因为是每个线程特有的数据。线程私有数据实现对于POD类型可以使用__thread来修饰(详解见Thread类封装) http://blog.csdn.net/jacktangj/article/details/76222350非POD类型可以使用线程特定数据封装 线程特定数据讲解: http://www.cnblogs.com/java原创 2017-08-08 12:48:39 · 279 阅读 · 0 评论 -
muduo源码分析(1):时间类
在muduo库中建立两个基类:copyable和noncopyable来标识派生类是否是可拷贝或者不可拷贝的。muduo库中大部分类为不可拷贝的。class noncopyable{ protected: noncopyable(){} // 封装了拷贝构造函数和复制操作符,使得派生类不可进行拷贝和赋值操作 private: noncopyable(const noncopya原创 2017-07-27 13:28:45 · 362 阅读 · 1 评论 -
Muduo源码分析(2):原子类
原子性操作: 不会被线程调度机制打断的操作,效率高于锁操作Muduo封装的gcc原子操作函数:// 如果*ptr == oldval,就将newval写入*ptr,然后返回*ptr// 否则直接返回*ptr__sync_val_compare_and_swap(type *ptr, type oldval type newval, ...)// 返回修改前的值__sync_fetch_原创 2017-07-27 14:30:09 · 296 阅读 · 0 评论 -
muduo库源码分析(3):异常类
异常类Exception 前言:#include <execinfo.h>int backtrace(void** buffer,int size);buffer:是一个指针数组,数组中存放的是调用过的函数地址buffer-----> --------------- | 调用函数地址 | ----------原创 2017-07-27 18:52:59 · 223 阅读 · 0 评论 -
Muduo库源码分析(6):有界缓冲区,无界缓冲区
缓冲区的实现 类似于生产者消费者模型,往缓冲区添加任务相当于生产者,从缓冲区提取任务相当于消费者,Muduo库使用条件变量加互斥锁实现的有界和无界缓冲区 简易的条件变量加互斥锁实现的生产者消费者模型(无界)实现: http://blog.csdn.net/zjf280441589/article/details/43883113 有界缓冲区class BoundedBlockingQueu原创 2017-08-07 10:19:54 · 768 阅读 · 0 评论