- 博客(6)
- 资源 (4)
- 收藏
- 关注
原创 spdlog Features
Very fast (seebenchmarksbelow). Headers only or compiled Feature rich formatting, using the excellentfmtlibrary. Asynchronous mode (optional) Customformatting. Multi/Single threaded loggers. Various log targets: Rotating log files. Daily log ...
2020-09-29 16:51:13 379
原创 libevent源码学习(14):IO复用模型之epoll的封装
目录Libevent提供的epoll后端结构体初始化epoll_init何时调用epoll_init事件添加epoll_nochangelist_add何时调用epoll_nochangelist_add事件删除epoll_nochangelist_del何时调用epoll_nochangelist_del事件监听epoll_dispatch为什么evmap_io_active的第三个参数需要或上一个EV_ET?何时调用epoll_dispatchepoll销毁e
2020-09-27 15:32:38 578
原创 当NONCOPYABLE遇见SINGLETON
在实现单例类时,通常要把构造相关的几个函数访问权限设为private或protected(最好是private)。但假设一个大型系统中,有数十个单例类(这很正常,单例类其实是外观模式的一种最常用设计),每一个都这么写显得繁琐不堪。要把这些操作代表的代码复用,可以使用c++语言提供的利器---继承。设计如下的基类:1 class NonCopyable {2 public:3 NonCopyable() = default;4 NonCopyable(const NonCopy
2020-09-09 11:02:40 236
转载 C++11 实现简单的阻塞队列
一个blocking queue是一个支持 take 和 put 的 queue。take操作从队列中取出一个元素,如果队列为空,那么take会阻塞到直到队列中有可用元素。put操作往队列里放入一个元素,如果队列是满,那么put会阻塞到队列有可用空间。一个简单的blocking queue的实现,首先我们要有一个非常底层的容器,至于是vector还是deque甚至是list都无所谓,我们这里选择deque作为容器。前面定义的blocking queue是有界的,也就是说元素有上限,所以才会出
2020-09-08 10:33:57 748
转载 BlockingQueue(阻塞队列)详解
一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。二. 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示: 从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列
2020-09-04 20:01:07 785
原创 epoll机制:epoll_create、epoll_ctl、epoll_wait、close
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_SETSIZE1024表示select最多同时监听1024个fd,当然,可以通过修改头文件...
2020-09-02 10:55:39 1347
listen-on-ipv4-and-ipv6-interfaces.py
2018-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人