Liangjf

The darkest hour is that before the dawn.

Libevent

Libevent的TAILQ_QUEUE队列

在queue.h这个文件中,实现了: 单链表(Singly-linked List) 简单队列(Simple queue) 特殊队列(Tail queue) /* * Tail queue definitions. */ #define TAILQ_HEAD(name, type) \ struct name { \ struct t...

Libevent

Libevent多线程,锁,条件变量(下)

测试锁可能出现的问题 Libevent通过一些变量记录锁的使用情况,当检查到这些锁的错误使用时,就调用abort,退出运行。 evthread_enable_lock_debuging,这个函数就是为了设置使能检测lock的了,但是实际代码是: //misspelled version for backward compatibility void evthread_enable_lo...

Libevent

Libevent多线程,锁,条件变量

libevent多线程 libevent默认是不开启多线程的,需要我们在配置编译的时候加上开启多线程的选项。 若没有开启多线程选项,libevent中没有使用到锁,条件变量等的。 若是单单开启了多线程的选项,如果没有调用了evthread_use_windows_threads() 或者evthread_use_pthreads() 或者调用 evthread_set_lock_cal...

Libevent

libevent内存管理

开启自定义内存分配 在一开始配置编译Libevent库是,不能加入--disable-malloc-replacement选项。 默认情况下,是没有这个选项的。如果加入了这个选项,将会在生成的event-config.h中,定义EVENT__DISABLE_MM_REPLACEMENT 这个宏。 libevent的内粗怒分配在mm-internal.h文件。顺便提一下,所有libeven...

Libevent

libevent配置文件和日志

event-config.h.cmake 用于整个项目的宏定义开关的定义。配置的时候创建,make的时候会用到。 应该在编译源码之前,先设置对应的开关。看下面的部分宏开关。 ...... #ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_ #define EVENT2_EVENT_CONFIG_H_INCLUDED_ #cma...

Libevent

Libevent2.1和两个重要结构体

Libevent2.1和两个重要结构体 老接口         新接口 event.h:        event2/event.h, event2/buffer.h event2/bufferevent.h event2/ tag.h evdns.h:        event2/dns*.h evhttp.h:       event2/http*.h evrpc.h:     ...

Reactor模型

Reactor模型的迭代进化

BIO模型 主要瓶颈在线程上。每个连接都会建立一个线程。虽然线程消耗比进程小,但是一台机器实际上能建立的有效线程有限 ———————————————————— NIO模型 由于是非阻塞的,应用无法知道什么时候消息读完了,就存在了半包问题 ———————————————————— Reactor单线程模型 客户端多次进行请求,如果在Handler中的处理速度较慢,那么后续的客户端请...

linux

linux 调试core文件

“🙉🙉🙉 ” 背景是人类首张黑洞照片,纪念一下,确实很震撼!!! linux 调试core文件 core文件是应用程序崩溃那瞬间的现场,包括一些栈信息,异常信息等。为我们了解崩溃现场发生了啥,好修复它。 打开core dump功能 ulimit -c查看,若是0,表示未开启可以用以下命令临时开启 ulimit -c unlimited 永久开...

TCP/IP

TCP粘包拆包处理

TCP粘包拆包处理 TCP是可靠的吗?可能你马上会回答:TCP是面向连接的,是可靠的。这个回答可能出现在TCP和UDP的区别问题中回答最多了。 这句话是没错的。但是这句话的可靠是指TCP协议会保证传输的有序性,尽量不丢包。 但是因为TCP是无边界,也就是以流的形式在网络中传输的。而且因为需要为其保证上面说的可靠性,最小单元(MTU),Nagle算法,接收端应用层没及时读取接收缓冲区中的数...

vscode go插件安装

解决vs code中golang插件依赖安装失败问题

解决vs code中golang插件依赖安装失败问题 Installing github.com/nsf/gocode SUCCEEDED Installing github.com/uudashr/gopkgs/cmd/gopkgs SUCCEEDED Installing github.com/ramya-rao-a/go-outline FAILED Installing githu...