摘要: https://www.bbsmax.com/A/D854VkZxzE/ 设置底层容器可以分离出两个逻辑上独立的问题: >如何存储构成优先级队列(容器)的实际元素,以及>如何组织这些元素以有效地实现优先级队列(priority_queue适配器类). 例如,当容量远大于其实际大小时,矢量的标准实现不 阅读全文
posted @ 2019-06-05 22:02 AKUNFYK 阅读(249) 评论(0) 推荐(0) 编辑
摘要: struct timeval { long tv_sec; /*秒*/ long tv_usec; /*微秒*/ }; 秒的定义为long,为了防止溢出,转换成毫秒之后保存在long long中 阅读全文
posted @ 2019-06-05 21:15 AKUNFYK 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 类成员变量、成员函数的定义顺序与调用顺序无关如果函数A定义在函数B的后面,但是在函数B也可以直接调用函数A。因为编译器分两步处理类:首先编译成员的声明。然后再编译函数体(如果有的话)。 阅读全文
posted @ 2019-06-05 09:54 AKUNFYK 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 协程 阅读全文
posted @ 2019-06-02 22:57 AKUNFYK 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-05-31 14:34 AKUNFYK 阅读(135) 评论(0) 推荐(0) 编辑
摘要: Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型pthread_t,由pthread_self()取得,该id由线程维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。你可能知道,Linux中的POSIX线 阅读全文
posted @ 2019-05-30 20:47 AKUNFYK 阅读(1791) 评论(0) 推荐(0) 编辑
摘要: 前提:文件描述符为非阻塞模式,epoll为ET触发方式 调用read之后,根据返回值可分为不同情况: ①nread<0 返回EINTR:该错误为慢系统调用期间进程捕捉到信号使得该系统调用被中断返回时造成的识别码,此时根据需要来重启服务 ②nread<0 返回EAGAIN:如果之前已经将读缓冲区中的内 阅读全文
posted @ 2019-05-28 10:06 AKUNFYK 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 互斥量加上条件变量可以保证cond.notify()的函数总是在cond.wait()之前发生,这点与CountDown是由相似作用的 这个ConutDown是java的多线程的功能。主要由三个部分,一个数据成员count,两个函数countdown与wait,在countdown将count减为0 阅读全文
posted @ 2019-05-27 13:44 AKUNFYK 阅读(135) 评论(0) 推荐(0) 编辑
摘要: epoll的边缘触发与水平触发 Tcp连接是双向的,内核为每个socket维护两个缓冲区,读缓冲区与写缓冲区,内核会一个关注这两个缓冲区,当采用水平触发时,对于写缓冲区而言,如果有多余空间可写,对于读缓冲区而言,如果有数据可读,内核就会通知epoll,使得wait函数返回,进而通过IO线程对这两个事 阅读全文
posted @ 2019-05-26 20:48 AKUNFYK 阅读(1041) 评论(0) 推荐(0) 编辑
摘要: 内核态的接收缓冲区和发送缓冲区 阅读全文
posted @ 2019-05-25 20:37 AKUNFYK 阅读(249) 评论(0) 推荐(0) 编辑