Linux多线程服务端编程——阅读笔记
文章平均质量分 78
Linux多线程服务端编程——阅读笔记
干干干就完了
这个作者很懒,什么都没留下…
展开
-
线程池代码
线程池Global.h#pragma onceconst int DEFAULT_POOL_SIZE = 10;const int STARTED = 0;const int STOPPED = 1;Mutex.h#pragma once#include <pthread.h>#include <unistd.h>#include <deque>#include <iostream>#include <vector>转载 2022-04-10 18:36:49 · 472 阅读 · 0 评论 -
限制最大并发连接数
限制最大并发连接数应对accept()时文件描述符file descriptor耗尽的办法服务端用Reactor模式处理并发连接在某个端口listen连接socketFd = accept(listenFd)epoll电平触发,如果有新连接就到达返回用accept()来活得新连接的socketfd假如accept()返回错误EMFILE该怎么办进程的文件描述符用完,无法创建socketfd由于无法拿到socketfd,也就无法close()在下次epoll_wait()时会立刻返转载 2022-02-19 20:57:21 · 550 阅读 · 0 评论 -
muduo Buffer类的设计与使用——读书笔记
muduo Buffer类的设计与使用muduo的IO模型event loop是non-blocking网络编程的核心,non-blocking总是和IO multiplexing一起使用,原因如下:不要使用轮询的方式来检查某个non-blockingIO操作是否完成,这样浪费CPU。IO multiplexing一般不能和blocking IO一起使用,因为blocking IO中read()/write()/accept()/connect()都有可能阻塞当前线程,这样线程就没有办法处理其他s原创 2021-09-18 20:28:18 · 281 阅读 · 0 评论 -
C++的编译模型
文章目录C++的编译模型单遍编译前向声明C++的编译模型单遍编译在单遍编译时,编译器只能根据目前看到的代码做出决策,读到后面的代码也不会影响前面做出的决定。这很影响名字查找和函数重载决议。对于名字查找,C++中的名字包括类型名,函数名,变量名,typedef名,template名。对于下面这行代码:Foo<T> a; //Foo,T,a这三个名字都不是macro根据之前出现的代码不同,上面这行语句至少有三种可能性。Foo是个template<typename X>原创 2021-09-13 22:19:54 · 279 阅读 · 0 评论 -
第5章高效的多线程日志
文章目录高效的多线程日志5.1 功能需求5.3 多线程异步日志关键代码高效的多线程日志“日志”主要指诊断日志:常用日志库提供的日志功能。交易日志:用于记录状态变更,通过回放日志可以逐步恢复每一次修改之后的状态。对于关键进程,日志通常需要记录:收到的每条内部消息的id;收到的每条外部信息的全文;发出的每条消息的全文,每条消息都有全局唯一的id;关键内部状态的变更;一个日志库可以分为前端和后端两部分。前端是供应用程序使用的接口(API),并生成日志消息;后端负责把日志消息写到目的地。原创 2021-09-02 20:45:21 · 2442 阅读 · 1 评论 -
第四章——读书笔记
文章目录C++多线程系统编程精要4.2 C/C++系统库的线程安全性4.3 Linux上的线程标识4.4 线程的创建与销毁的守则4.4.2 exit()在C++中不是线程安全的4.5 善用__thread关键字4.6 多线程与IO4.7 用RAII包装文件描述符4.8 RAII与fork()4.9 多线程与fork()4.10 多线程与signalC++多线程系统编程精要学习多线程编程面临的最大的思维方式的转变有两点当前线程可能随时会被切换出去,或者说被抢占了。多线程程序中事件的发生顺序不再有全局原创 2021-08-23 17:37:04 · 235 阅读 · 0 评论 -
第三章——读书笔记
文章目录多线程服务器的适用场合与常用编程模型3.1 进程与线程3.2 单线程服务器的常用编程模型3.3 多线程服务器的常用编程模型3.3.1 one loop per thread3.3.2 线程池3.3.3 推荐模式3.5 多线程服务器的适用场合3.5.1 必须用单线程的场合3.5.2 单线程程序的优缺点3.5.3 使用多线程程序的场景3.6 多线程服务器的适用场合例释和答疑多线程服务器的适用场合与常用编程模型3.1 进程与线程一个进程是“内存中正在运行的程序”,每个进程有自己独立的地址空间。“在同原创 2021-08-22 19:55:08 · 190 阅读 · 0 评论 -
第二章——读书笔记
文章目录线程同步精要2.1 互斥器(mutex)2.1.1 只使用非递归的mutex2.1.2 死锁2.2 条件变量2.3不要用读写锁和信号量2.4封装MutexLock,MutexLockGuard,Condition2.5线程安全的Singleton实现2.6 sleep()不是同步原语2.8 借shared_ptr实现copy_on_write线程同步精要线程同步的四项原则,按重要性排列:首要原则是尽量最低限度地共享对象,减少需要同步的场合。一个对象能不暴露给别的线程就不要暴露;如果要暴露,优原创 2021-08-22 14:58:09 · 392 阅读 · 0 评论 -
第一章——读书笔记
文章目录线程安全的对象生命期管理1.1析构函数遇到多线程1.1.1线程安全的定义1.2对象的创建很简单1.3销毁太难1.3.1mutex不是办法1.3.2作为数据成员的mutex不能保护析构1.4线程安全的Observer有多难1.6shared_ptr/weak_ptr1.8 应用到Observer上1.9shared_ptr的线程安全1.10shared_ptr技术与陷阱1.11对象池1.11.1 enable_shared_from_this1.11.2 弱回调线程安全的对象生命期管理1.1析构函原创 2021-08-21 18:21:31 · 420 阅读 · 0 评论