摘要: 1. 介绍 关于智能指针 shared_ptr 很有意思的一个问题。 可以用 std::shared_ptr 将裸指针封装起来,变成带引用计数的智能指针,当引用计数为0,C++会自动把裸指针指向的内存回收。 先定义一个类 class A { public: A(); private: int a_; 阅读全文
posted @ 2021-06-26 23:39 suntus 阅读(550) 评论(0) 推荐(0) 编辑
摘要: #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); #define _GNU_SOURCE 阅读全文
posted @ 2021-06-22 23:15 suntus 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 都是IO多路复用。 可以在一个进程或线程中同时管理多个IO的事件,在相当于在一个点去等待这些事件,收集到事件后,再分别处理。 2. 基本API 2.1. select // 1. 操作fd集 void FD_CLR(int fd, fd_set *set); int FD_ISSET(i 阅读全文
posted @ 2021-06-20 23:51 suntus 阅读(45) 评论(0) 推荐(0) 编辑
摘要: C++标准保证把 std::vector 的元素排列跟数组一样,因此可以这样用: &*my_array.begin() 取到相应的数组. auto it = std::max_element(v.begin(), v.end()) 取到最大元素的iterator std::move() 将变量变为右 阅读全文
posted @ 2021-06-20 23:17 suntus 阅读(40) 评论(0) 推荐(0) 编辑
摘要: IO事件通知机制。 1. 简介 跟poll(2)类似,可以同时监测多个文件描述符上的事件。可以使用水平触发和边沿触发两种模式,可以同时监听大量fd,而且性能很好。 epoll_create(2)创建一个epoll实例,并返回一个fd用于控制该实例。 epoll_ctl(2)添加感兴趣的fd到epol 阅读全文
posted @ 2021-06-20 23:06 suntus 阅读(54) 评论(0) 推荐(0) 编辑
摘要: IO多路复用。 1. 定义 #include <poll.h> struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events * 阅读全文
posted @ 2021-06-20 21:59 suntus 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 大部分都是参考manual 1. 整体介绍 1.1. 信号默认处理动作 Term: 中止进程 Ign: 忽略信号 Core: 中止进程并转储文件 Stop: 暂停进程 Cont: 继续当前暂停的进程 除此之外还可以自定义处理函数,处理函数一般是在当前进程栈,也可以用sigaltstack(2)设置信 阅读全文
posted @ 2021-06-20 21:45 suntus 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1. 定义 同步IO多路复用。 select(2) 和 pselect(2) 的区别: 时间精度不同,select(2) 用 struct timeval,精确到us,pselect(2) 用 struct timespec ,精确到ns select(2) 会更新 timeout ,提示还剩下多长 阅读全文
posted @ 2021-06-19 17:56 suntus 阅读(50) 评论(0) 推荐(0) 编辑