muduo网络库
文章平均质量分 83
视此虽近_邈若山河
这个作者很懒,什么都没留下…
展开
-
muduo网络库base篇一: 大纲
上周我选择性的读了Linux/UNIX系统编程手册 大部分章节,想更深入了解linux系统编程。 作为一个知乎深度受害者,在知乎 你读过的最好的 C++ 开源代码是什么? 问题下,看到有人提到muduo。离职也快两周了,为了下份工作充充电,作为多年没撸过C++代码的渣渣,硬着头皮开启了膜拜大师之旅。闲言少叙……我用了两天时间读了base部分代码,按照阅读顺序,主要内容如下: 1.基原创 2018-01-12 17:47:07 · 368 阅读 · 0 评论 -
muduo网络库net篇三:I/O线程
EventLoopThread类EventLoopThread顾名思义,事件循环线程。 当创建此类线程,并执行:EventLoop* startLoop(); //启动线程 执行loop() 并返回线程loop_线程就会一直事件循环,直到对象析构或通过返回的loop_终止。 事件由主线程设置,且设置事件只能通过startLoop()返回的loop_,所以此函数会阻塞,直到线程给原创 2018-01-16 13:34:10 · 368 阅读 · 0 评论 -
muduo网络库net篇一:事件处理
时间有限,net篇采用边看代码边写。 net部分的类都定义在muduo::net命名空间下。EventLoop类这个类涉及好几个类: boost::scoped_ptr poller_; boost::scoped_ptr timerQueue_; boost::scoped_ptr wakeupChannel_; ChannelList activeChannels_;原创 2018-01-16 11:34:24 · 263 阅读 · 0 评论 -
muduo网络库net篇二:定时器
Timer、TimerId类Timer类主要成员数据: const TimerCallback callback_; //回调函数 Timestamp expiration_; //定时器超时时间 const double interval_; //定时器超时时间 const bool repeat_; //interval_>0 const int64_t seq原创 2018-01-16 11:30:08 · 507 阅读 · 0 评论 -
muduo网络库之补充
废话base部分看了两天代码,写博文却用了更长时间。原因在于总在斟酌写多少合适,加上初次写博文难免不知道怎么下手。 我写下其实主要为了加强理解,其次为了自己今后能看看,如果能帮助后来者理解更好不过,但也不奢求。 其实还是有好多东西没有写下,我已经说过,我并没有实际撸过C++,所以源码中一些看似基础的东西,其实我并不是特别清楚。 有的东西实在不该在解读代码的地方赘述。这里单独加上一篇,把一原创 2018-01-14 18:54:57 · 204 阅读 · 0 评论 -
muduo网络库base篇五:进程信息 文件 日志
进程信息 获取/proc/seft文件夹各文件中数据参数及系统参数文件ReadSmallFile类 读取文件数据到缓冲区 AppendFile类 设置缓冲区为64KB,写采用fwrite_unlocked,并非线程安全GzipFile类 .gz的文件处理LogFile类 const string basename_; const off_t rollSi原创 2018-01-14 16:36:53 · 395 阅读 · 0 评论 -
muduo网络库base篇四:生产者/消费者
生产者与消费者模式是解决并发的有效手段。缓冲队列muduo实现了两种缓冲队列:有界缓冲队列和无边界缓冲队列 无边界缓冲队列BlockingQueue比较简单,成员数据如下:mutable MutexLock mutex_;Condition notEmpty_;std::deque queue_;逻辑:Created with Raph原创 2018-01-14 14:21:13 · 206 阅读 · 0 评论 -
muduo网络库base篇三:线程
muduo线程部分,分为线程安全、线程同步、以及线程本身,由于单例模式也是和线程相关,所以也放在一起写。线程class Thread : boost::noncopyable{ public: typedef boost::functionvoid ()> ThreadFunc; private: bool started_; bool原创 2018-01-14 12:06:13 · 266 阅读 · 0 评论 -
muduo网络库net篇五:TCP(2)
Acceptor类Acceptor类主要成员数据: EventLoop* loop_; Socket acceptSocket_; Channel acceptChannel_; NewConnectionCallback newConnectionCallback_;传统服务端socket模型为: 创建服务端socket,bind地址,监听list原创 2018-01-22 12:12:08 · 175 阅读 · 0 评论 -
muduo网络库net篇四:TCP(1)
这几天有去面试,回来之后,懈怠了。接着阅读代码吧!TcpClient类TcpClient类主要成员数据: EventLoop* loop_; ConnectorPtr connector_; // avoid revealing Connector ConnectionCallback connectionCallback_; MessageCallback me原创 2018-01-21 22:23:31 · 307 阅读 · 0 评论 -
muduo网络库base篇二:Time! Time!
基础类 Types.h copyable.h可复制类继承copyable,否则继承boost::noncopyable。 对C++类型转换进行扩展,implicit_cast 隐式类型转换,down_cast指针转换(父类对象->子类对象)。时间日期类 Date类在muduo::detail下实现儒略日算法及转换年月日结构函数 Date类使用儒略日 可以通过年月日原创 2018-01-13 12:05:51 · 319 阅读 · 0 评论 -
muduo网络库net篇:写在进一步阅读之前
socketsockets命名空间封装linux API InetAddress封装sockaddr_in*赋值 Socket封装socket操作Buffer类关于Muduo 中输入输出缓冲区的设计与实现的原理,陈硕已经写的很详细了,可参考[Buffer 类的设计][1] 。在这里,我主要关注代码数据方面。 Buffer类成员数据如下:public: static原创 2018-01-16 17:09:50 · 261 阅读 · 0 评论