ICode9

精准搜索请尝试: 精确搜索
  • muduo 库解析之十:CountDownLatch2021-04-25 14:05:18

    源码 CountDownLatch.h #pragma once #include "Mutex.h" #include "Condition.h" #include "NonCopyable.h" namespace muduo { class CountDownLatch : public NonCopyable { public: explicit CountDownLatch(int count)

  • muduo 库解析之三:Date2021-04-24 19:35:05

    源码 Date.h #include "Copyable.h" #include <time.h> #include <string> namespace muduo { class Date : public Copyable { public: struct YearMonthDay { int year; //@ [1900 2500] int mo

  • muduo 库解析之六:Mutex2021-04-24 14:02:58

    源码 #pragma once #include <pthread.h> #include "NonCopyable.h" #include "CurrentThread.h" namespace muduo { //@ 检查返回值的宏 #ifdef CHECK_PTHREAD_RETURN_VALUE #ifdef NDEBUG __BEGIN_DECLS extern void __assert_perror_fail(int

  • muduo 库解析之四:Exception2021-04-24 13:34:17

    源码 Exception.h #pragmae once #include <exception> #include <string> namespace muduo { class Exception : public std::exception { public: explicit Exception(std::string msg); ~Exception() noexcept override = default

  • muduo 库解析之三:CurrentThread2021-04-24 13:01:29

    __thread 线程局部存储 Thread Local Storage(tls),是一种机制,通过这一机制分配的变量,每个当前线程有一个该变量的实例。 在用户层,用一个新的存储类型关键字:__thread 表示这一扩展。 __thread 使用规则: 如果一个线程局部存储变量有一个初始化器,它必须是常量表达式。 __thread 限定

  • muduo Atomic2021-03-17 16:02:44

    首先是添加注释的源码: // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo at chenshuo dot com) #ifndef MUDUO_BASE_ATOMIC_H #define MUDUO_BASE_ATOMIC_H #include "muduo/ba

  • C++类中使用typedef和类中使用枚举类型(muduo日志类中遇到的问题)2021-03-15 22:01:08

    在学习muduo_base库中的日志类时,发现了一种新鲜的语法。 1.在类的public中typedef定义的新类型,可以在类外使用类名::新类型名的方式调用。 class Test { public:   typedef int integer; ... }; 如果该语句放在public段中,则可以在类外部使用,如: Test::integer a=1;//声明一

  • muduo echo服务器测试2021-02-10 13:01:07

    echo 服务器测试 调试文件task.json /* muduo网络库给用户提供了两个主要的类 TCPServer:用于编写服务器程序 TCPClient:用于编写客户端程序 epoll+线程池 好处:能够把网络I/O的代码和业务代码区分开,主要开发业务,网络库代码封装了 业务代码暴漏

  • c++:muduo使用template保存std::function的参数类型2021-01-04 21:34:49

    概览 最近看到陈硕老师的muduo的7.6实现protobuf编解码器与消息分发器,觉得消息分发器这里写的确实很妙,简述一下背景,做业务的时候我们常会在tcp上制定一个消息格式,通过这些消息进行通讯,消息除了长度,类型,消息体为了最大压缩会使用pb,然后陈老师制作一个如下的消息格式样例 +-+-+-+-+-

  • muduo源码解析30-网络库8:tcpserver类2020-09-02 19:31:20

    tcpserver: 说明: 之前说的acceptor负责接收连接,tcpconnection负责对这个连接进行操作。 那么这两个合起来就有一个tcpserver的基本架构了 tcpserver使用acceptor来接受一个连接,使用tcpconnection来对这个连接进行处理。 tcpserver.h /* TcpServer实现了对于TCP服务的封装,功能是管

  • muduo源码解析17-(bounded)blockingqueue类2020-08-26 18:01:17

    blockingqueue和boundedblockingqueue 作用: 无边界blockingqueue: 实现了一个有锁的dequeue双端队列保证put,take,size操作都具有原子性内部使用互斥锁mutexlock,再使用一个条件变量用于判断队列是否为空 有边界boundedblockingqueue: 实现了一个有边界的双端队列,实现线程安全,对常

  • muduo源码解析14-logfile类2020-08-25 16:00:25

    logfile类: class logfile:noncopyable { }; 作用: 主要负责日志写入文件的管理内部提供append,rollFile,flush三个函数append表示向文件尾部追加数据,rollFile表示需要更换一个日志文件来写日志flush表示清空文件读写缓冲区 注意append和flush都提供了有锁/无锁的实现,logfile构

  • muduo源码解析10-logstream类2020-08-23 23:31:46

    FixedBuffer和logstream class FixedBuffer:noncopyable { }; class logstream:noncopyable { }; 先说一下包含的头文件有一个StringPiece.h 个人感觉这个stringpiece没有必要实现啊,直接用std::string就好了内部实现的操作,基本上std::string都能完成.后面有关stringpiece我都直

  • Muduo源码Poller类 + EpollPoller类详解2020-04-14 21:52:53

      简介          Poller class 是IO multiplexing的封装。在muduo中它是一个抽象类,因为muduo同时支持poll和epoll两种IO multiplexing机制。Poller是EventLoop的间接成员,只供其owner EventLoop在IO线程中调用,因此无需加锁。其生命周期和EvenLoop相等。Poller并不拥有Chan

  • muduo网络库学习--封装2020-02-06 12:05:30

    muduo网络库学习--封装reactor模型EventLoop 自己是做驱动的,并不是后端工程师,因此学习Muduo过程中,有很重要的一个坎要迈过去。就是面向对象的封装。muduo很少用到类的继承,这给学习者或者维护者提供了很大的便利,无论是学习和维护,都变得可控,同时又降低了门槛。 本文分享了自己

  • muduo库学习笔记十三:base库之ThreadLocalSingleton2020-02-06 09:38:34

      线程本地存储单例类:针对“每个结构”每个线程仅有一个线程本地存储类对象 t_value_:类型为T的指针是pod类型可以用__thread修饰,每个线程一份 deleter:Deleter类对象 instance():返回T引用 pointer():返回T指针 destructor():借助Deleter才能被调用 Deleter类:嵌套在ThreadLoca

  • build muduo库时报错2020-01-11 19:44:23

    报错为 undefined reference to boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar… 对‘boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring)’未定义的引用 网上查了很多资料,说是gcc不同版本

  • 16.muduo学习笔记之base_LogStream.{h&cc}2019-08-21 09:44:10

    1. 说明 muduo的日志相关类 又是一个复杂的文件 日志类之间的关系:Logger --> Impl --> LogStream --> operator<<FixedBuffer --> g_output --> g_flush 2. FixedBuffer类 0. 类说明 data_指针指向数组头不变,cur_可变,相当于偏移 end()就返回缓冲区的尾部指针

  • 17.muduo学习笔记之base_Logging.{h&cc}2019-08-21 09:41:11

    1. 说明 muduo的日志类,关于日志的相关信息见最后 这个文件有点复杂,而且日志功能贯穿好几个文件,下面开始慢慢探索 日志类之间的关系:Logger --> Impl --> LogStream --> operator<<FixedBuffer --> g_output --> g_flush 2. Logger类 1. 成员变量 LogLevel,枚举

  • 18.muduo学习笔记之base_FileUtil.{h&cc}2019-08-21 09:40:45

    1. 说明 muduo的日志文件类 2. ReadSmallFile类 1. 变量 fd_ 绑定的文件描述符 err_ 错误码吧 buf_ char数组 kBufferSize buf_数组的大小 2. 函数 构造函数 打开文件 析构函数 关闭文件描述符 readToString() 貌似把文件中的内容读成string,放在

  • 19.muduo学习笔记之base_LogFile.{h&cc}2019-08-21 09:40:17

    1. 类说明 1. 功能 muduo的文件日志类 这里用到了FileUtil和ProcessInfo 2. 继承 noncopyable 2. 成员变量说明 basename_ string类型的文件名 rollSize_ 日志文件达到rollSize_就换一个新文件 flushInterval_ 日志写入间隔时间 checkEveryN_ 看count_的说

  • 20.muduo学习笔记之base_其他.{h&cc}2019-08-21 09:39:48

    1. 说明 还有一些其他的比较简单文件,这里统一说一下 2. ProcessInfo.{h&cc} 这个是关于进程相关的一些操作,不是类,是个命名空间,能获得pid,主机名等 3. Data.{h&cc} 对日期的封装 4. TimeZone.{h&cc} 对UTC和本地时间的封装 5. AsyncLogging.{h&cc} 异步日志,这

  • muduo学习一:简介2019-07-27 18:37:42

    原文链接:http://www.cnblogs.com/vinke2013/p/7613075.html   线程安全,支持多核多线程   不支持UDP,只支持TCP   只支持一种是使用模式:non-blocking IO+one event loop per thread + thread pool   只做library,不做framework   不是使用面向对

  • 从epoll构建muduo-1 mini-muduo介绍2019-05-29 15:53:29

    https://blog.csdn.net/voidccc/article/details/8719752 ========== https://blog.csdn.net/liangzhao_jay/article/details/79656237 ====== https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665 ========== https://blog.csdn.net/kobejayandy/article/deta

  • muduo 网络库reactor 模式下 事件循环器的实现2019-05-17 15:56:15

    文章目录编译运行总结 这里是实现的代码 https://download.csdn.net/download/qq_43390943/11184422 文件 编译 运行 总结 /* * 主要的设计思路: * 1、首先要熟悉reactor的整个设计的模式,主线程负责链接新的客户端,在线程池中获取一个EventLoop来监听这个新产生的文件描

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有