libevent ---- evtimer_set event_set

本文介绍了evtimer_set宏定义的实现原理,该宏用于设置一个定时器,通过调用event_set函数完成初始化。详细解释了struct event结构体的各个成员变量的作用,包括用于管理超时事件的ev_timeout_pos成员,以及事件描述符ev_fd等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#define evtimer_set(ev, cb, arg)	event_set((ev), -1, 0, (cb), (arg))
void
event_set(struct event *ev, evutil_socket_t fd, short events,
	  void (*callback)(evutil_socket_t, short, void *), void *arg)
evtimer_set  是用来定义一个定时器的函数,其实就是一个宏定义,使用-1作为fd的默认值,events使用0

最终调用event_assign函数,主要是用来设置struct event 这个结构体

struct event {
	struct event_callback ev_evcallback;

	/* for managing timeouts */
	union {
		TAILQ_ENTRY(event) ev_next_with_common_timeout;
		int min_heap_idx;
	} ev_timeout_pos;
	evutil_socket_t ev_fd;

	struct event_base *ev_base;

	union {
		/* used for io events */
		struct {
			LIST_ENTRY (event) ev_io_next;
			struct timeval ev_timeout;
		} ev_io;

		/* used by signal events */
		struct {
			LIST_ENTRY (event) ev_signal_next;
			short ev_ncalls;
			/* Allows deletes in callback */
			short *ev_pncalls;
		} ev_signal;
	} ev_;

	short ev_events;
	short ev_res;		/* result passed to event callback */
	struct timeval ev_timeout;
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值