libevent涉及的知识积累

O(1)实现单链表插入删除

阅读libevent源码时发现了linux提供的一个链表,宏定义如下。

#define	LIST_ENTRY(type)						\
struct {								\
	struct type *le_next;	/* next element */			\
	struct type **le_prev;	/* address of previous next element */	\
}

不了解关于为什么prev指针取二重指针且指向前一元素的next指针的地址。

参考stackoverflow的描述后,结合源码捋一遍恍然大悟。

二重指针的用途在于可以在任一节点以O(1)的效率删除/插入节点。而且要说明下这不是double link list,  是单向链表。

因为墙看不到的话这是原话:

自己分析的O(1)实现链表插入|删除

设置文件描述符非阻塞io:

fcntl(fd, F_SETFL, O_NONBLOCK)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值