能否修改libevent`struct event`变量?
在on callback function能否修改libevent`struct event`变量?,c,network-programming,libevent,C,Network Programming,Libevent,在on callback functionon_accept中,我创建了一个事件conn_ev conn_ev = (struct event *)malloc(sizeof(struct event)); event_set(conn_ev, connfd, EV_READ, on_recv, conn_ev); event_base_set(base, conn_ev); event_add(conn_ev, NULL); 当有新连接时,将触发\u recv
on_accept
中,我创建了一个事件conn_ev
conn_ev = (struct event *)malloc(sizeof(struct event));
event_set(conn_ev, connfd, EV_READ, on_recv, conn_ev);
event_base_set(base, conn_ev);
event_add(conn_ev, NULL);
当有新连接时,将触发\u recv上的回调函数
在_recv(int connfd,short event,void*conn_event)
上的回调函数中,我有
conn_ev = (struct event *) conn_event;
event_set(conn_ev, connfd, EV_WRITE, on_send, conn_ev);
event_base_set(base, conn_ev);
event_add(conn_ev, NULL);
因此,conn_ev
在这个回调函数中被修改
这里是否存在任何可能的问题/陷阱,以便更好地使用新连接
谢谢 在修改事件之前,必须确保未使用该事件。如果您处于这个特定事件的回调中,并且它不是一个持久性事件,那么您可能会没事,但我建议您在任何情况下都调用event_del()
虽然它可以工作,但不应使用malloc()和event_set(现在已弃用)。改用event_new(),或者至少用event_assign()替换event_set