muduo
文章平均质量分 96
ptgood
这个作者很懒,什么都没留下…
展开
-
std::enable_shared_from_this 有什么意义
假如有一个stock和stockFactory类,代表股票和股票池,stockFactory里输入股票代码查询是否有stock,有则返回,没则创建并返回stock,这里用一个std::map来建立映射;而股票如果用完了要自己析构,要顺便把stockFactory里map的内容也析构掉;因为Stock采用shared_ptr来管理的,要让Stock析构的时候顺便调用stockFactory::delete(Stock),这样要在Stock的析构函数里调用,这样代码难以实现,还有另一种办法,设置shar原创 2020-08-02 16:58:50 · 366 阅读 · 0 评论 -
std::any的实现
前言学习自用,帮助理解,有错麻烦提一下,代码没跑过,想着知道大概思想就好..问题 为什么不用类型推断,类型推断又是什么TODO 类型擦除怎么实现的,用类的继承来实现的,为什么类的继承可以实现? 基类是不含模板参数的,派生类中才有模板参数,这个模板参数类型正是赋值的类型,在赋值时,将创建的派生类对象赋值给基类指针,基类的派生类中携带了数据类型,基类只是原始数据的一个占位符,通过多态,它擦除了原始数据类型,因此,任何数据类型都可以赋值给他,从而实现了能存放所有类型数据的目标 正文原创 2020-08-01 22:27:55 · 1718 阅读 · 1 评论 -
muduo为什么不直接用MutexLockGuard
前言这篇是未完成的垃圾,别浪费时间看了问题为什么有些项目直接用的condition用的是unique_lock 为什么不直接用用muteLock正文UnassignGuard直接替换成MutexLockGuard,会导致死锁 不直接去用mutex,在上锁放锁的同时要维护pthread的holder变量参考资料为什么不直接用mutex_lock mutexLock和unique_lock区别...原创 2020-07-12 15:52:35 · 178 阅读 · 0 评论 -
定时器的几种实现
前言此篇文章为自己总结,若有错麻烦指出,感谢引言服务器编程中一块是定时器,影响着服务器性能定时器一个作用是用于定时检测客户端连接,并踢掉非活动连接;定时器一般会把定时事件封装成定时器,并进行组织以方便管理计时在linux中,一般由<unistd.h>文件下的alarm函数和setitimer来设置定时器,到时间则发出SIGALARM,并调用指定的到期信号处理函数,signal(SIGALRM, handler);函数来设置到期事件处理函数,而这个到期事件处理函数在原创 2020-06-13 14:35:08 · 1175 阅读 · 0 评论 -
服务器并发模型/方案
引言引言TODO各种模式代码TODO注意,这篇文章的用词,listening fd和connection fd对于每个模式会分析优缺点最简单的模式:iterative模式可称为iterative模式,循环模式;如下图,可以看出是一个socket编程的几个经典步骤,socket,bind,listen->accept->read->处理数据->send->close;同时也可以看出,这个只能适合短连接,因为每次只能处理一个connection fd,必须c原创 2020-06-14 17:57:05 · 668 阅读 · 0 评论 -
网络编程的日志系统
前言略为什么用日志系统略,参照参考资料[1]日志系统的设计日志的格式,即每条日志的内容,见参考资料[1]和[2] 日志的级别,见参考资料[1] 日志打印位置:一般是文件,最好不要往网络中打印,这个文章只谈文件 日志作用域:全局,程序中每个位置应该都能用到 日志类的整体设计,最简单版见参考资料[1] 日志的使用:日志是被业务线程使用的,即业务线程需要调用写入日志高性能日志系统的要求每个线程,及每个控制流都应该能使用到日志系统,有以下两个选择问题1.同步写和异步写,同步即原创 2020-06-17 14:59:25 · 483 阅读 · 0 评论 -
半同步/半异步模式,半同步半反应堆reactor模式
前言看游双的书并理解,个人学习,有错麻烦提一下,感谢事件处理模式和并发模型的区别这篇要介绍的事件处理模式有reactor和proactor;而要介绍的并发模型有半同步/反应堆和半同步半异步事件处理模式,指的是...TODO事件处理模式事件处理模式,本文介绍的有两种,是reactor(反应堆)和proactor模式,(还有没有其他的呢?)同步IO模型用于实现reactor模式,异步IO模型用于实现proactor模式异步IO比如有POSIX的 AIO和linux下原生的liba原创 2020-06-18 21:25:29 · 3542 阅读 · 4 评论 -
ET和LT的原理和区别
前言学习自用,有错麻烦提出,感谢基本知识ET和LT是IO复用的两种模式,ET早于LT出现(依据TODO)对于几种IO复用,select和poll只支持LT(?TODO)level triggered 和edge trigger,起源于电频的激发,TODOET是一次事件只会触发一次,如一次客户吨发来消息,fd可读,epoll_wait返回.等下次再调用epoll_wait则不会返回了LT是一次事件会触发多次,如一次客户端发消息,fd可读,epoll_wait返回,不处理这个fd,再原创 2020-06-18 23:57:57 · 13464 阅读 · 1 评论