Muduo网络库源码分析与实践
系统的对Muduo网络库源码进行分析,并且总结出了相关知识点。对其功能模块进行拆分,并进行运用。
chudongfang2015
开心开心!!!!!!
展开
-
[Muduo网络库源码分析] (13) net/EventLoopThread_h_c新建一个专门用于EventLoop的线程
新建一个专门用于 EventLoop 的线程实现:启动一个线程,在其中运行 EventLoop::loop()功能:运行Evenloop知识点条件变量使用:当多个线程对同一个变量进行操作时使用条件变量对其进行保护,条件变量同互斥锁一同起作用。代码及分析:EventLoopThread.h// Copyright 2010, Shu...原创 2018-03-11 21:35:14 · 420 阅读 · 0 评论 -
[Muduo网络库源码分析] (12) net/Buffer_cc_h缓冲区(非阻塞 IO 必备)
缓冲区(非阻塞 IO 必备)实现:实现Buffer类功能:缓冲区,为非阻塞IO暂时存储数据,实现高效IO知识点:string的函数实现resize()Resizes the string content to n characters.If n is smaller than the current length of the string, ...原创 2018-03-11 19:22:10 · 837 阅读 · 0 评论 -
[Muduo网络库源码分析] (11) base/Types.h_基本类型声明
基本类型声明功能:为网络库提供基本的类型知识点:stirng 的三种实现方式:用途:可用与类型转换和string的高效使用代码及分析:Types.h#ifndef MUDUO_BASE_TYPES_H#define MUDUO_BASE_TYPES_H#include <stdint.h>#ifdef MUDUO_STD_STRING#include <string>#else //原创 2017-08-01 14:14:07 · 649 阅读 · 0 评论 -
[Muduo网络库源码分析] (10) base/ThreadPoll_cc_h_线程池
线程池实现:ThreadPool类功能:实现固定大小的线程池,用来高效的处理大量任务知识点:回调函数 通俗的讲,回调函数就是在放在另一个函数中执行的函数,在回调中,我们利用某种方式,把回调函数像参数一样传入中间函数。boost::ptr_vector Boost中的指针容器 threads_.reserve 设置指针容器的大小for_each原创 2017-08-01 14:12:26 · 518 阅读 · 0 评论 -
[Muduo网络库源码分析] (9) base/Thread.cc_h_CurrentThread_h线程对象
线程对象实现:实现Thread类、ThreadData结构体 、CurrentThread命名空间功能:实现线程对象并实现当前线程信息存储知识点:__thread __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。原创 2017-07-31 09:25:15 · 1189 阅读 · 0 评论 -
[Muduo网络库源码分析] (8) base/StringPiece.h_字符串参数传递类型
字符串参数传递类型实现:StringPiece、StringArg类功能:实现字符串类型、字符串参数传递类型知识点:__type_traits 对一个类型进行描述,从而对其运算速度进行优化reinterpret_cast 其可以进行指针间的转换,并且其可以实现指针和整数的相互转换用途:可用于字符串传参,和其他字符串处理代码及分析:StringPiece.h// Taken原创 2017-07-31 09:21:46 · 757 阅读 · 0 评论 -
[Muduo网络库源码分析] (7) base/Singleton.h_SINGLETON对象创建型模式
SINGLETON(单件)—对象创建型模式实现:Singleton类功能:保证一个类仅有一个实例,并提供一个访问它的全局访问点。知识点:pthread_once 保证init_routine()函数在本进程执行序列中仅执行一次static用法Singleton设计模式用途:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。当这个唯一实例应该是通过子类化可扩展的,并且原创 2017-07-31 09:20:09 · 563 阅读 · 0 评论 -
[Muduo网络库源码分析] (6) base/Mutex.h_互斥锁操作
互斥锁操作功能:封装对互斥锁的操作知识点:MCHECK()宏的实现#define MCHECK(ret) ({ __typeof__ (ret) errnum = (ret); \ if (__builtin_expect(errnum != 0, 0)) \ __assert_原创 2017-07-31 09:18:32 · 1189 阅读 · 0 评论 -
[Muduo网络库源码分析] (5) base/FileUtil.cc_h_文件操作
文件操作实现:ReadSmallFile、AppendFile类功能:实现文件内容、信息的读取与写入知识点:fwrite_unlocked fwrite 和 fwrite_unlocked是一对,其中fwrite_unlocked是fwrite的线程不安全版本,因为不加锁。O_CLOEXEC 调用open函数O_CLOEXEC模式打开的文件描述符在执行exec调用新程序中关闭原创 2017-07-31 09:15:39 · 2060 阅读 · 0 评论 -
[Muduo网络库源码分析] (4) base/Exception_cc_h_带 stack trace 的异常基类
带 stack trace 的异常基类实现:Exception类功能:实现对boost异常类的封装,可以有效存储异常知识点:int backtrace(void **buffer, int size); 该函数用与获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针数组。参数 size 用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指原创 2017-07-31 09:13:31 · 765 阅读 · 0 评论 -
[Muduo网络库源码分析] (3) base/CountDownLatch.cc_h_“倒计时门闩”同步
“倒计时门闩”同步实现:CountDownLatch类功能:利用条件变量、倒计时实现同步知识点:mutable:mutable修饰符表示其可以在任何情况下变化条件变量互斥锁用途:用于实现倒计时同步代码及分析:CountDownLatch.h// Use of this source code is governed by a BSD-style license// that can be原创 2017-07-31 09:10:59 · 593 阅读 · 0 评论 -
[Muduo网络库源码分析] (2) base/Condition.cc_h_条件变量操作
条件变量操作功能:封装对条件变量的一系列操作知识点:条件变量常用的函数 pthread_cond_init pthread_cond_wait pthread_cond_signal pthread_cond_broadcast pthread_cond_destroy pthread_cond_tim原创 2017-07-31 09:08:59 · 521 阅读 · 0 评论 -
[Muduo网络库源码分析] (1) base/Atomic.h_原子操作与原子整数
原子操作与原子整数前言:C/C++中数值操作,如自加(n++)自减(n–-)及赋值(n=2)操作都不是原子操作,如果是多线程程序需要使用全局计数器,程序就需要使用锁或者互斥量,对于较高并发的程序,会造成一定的性能瓶颈。为了提高赋值操作的效率,gcc提供了一组api,通过汇编级别的代码来保证赋值类操作的原子性,相对于涉及到操作系统系统调用和应用层同步的锁和互斥量,这组api的效率要高很多。类名:m原创 2017-07-31 09:06:27 · 852 阅读 · 0 评论