可以解析`struct event`变量吗?

时间:2013-06-10 10:18:46

标签: c network-programming libevent

在回调函数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);

当有新连接时,将触发回调函数on_recv

并且在回调函数on_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

这里是否有任何问题/陷阱,以便我更好malloc一个新的conn_ev?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须确保在修改前不使用该事件。如果你正处于这个特定事件的回调并且它不是一个持久的事件,你可能没事,但我建议在任何情况下都调用event_del()。

虽然它可能有效,但您不应该使用malloc()和event_set(现在已弃用)。改为使用event_new(),或者至少用event_assign()替换event_set。