libevent无法读取打开的套接字描述符

时间:2013-03-21 07:10:43

标签: libevent

最近,我有一个使用libevent的小型套接字服务器程序。

总之,它确实有以下工作。

void read_function(int fd, short event, void* arg) {
    printf("callback is called!\n");

    // read from fd, and send a reply to fd!
}

void accept_thread_function() {
    int fd = accept(...);
    struct event* ev_read = new struct event();
    memset(ev_read, 0, sizeof(struct event));
    event_set(ev_read, fd, EV_READ|EV_PERSIST,read_function,ev_read);
    event_add(ev_read, 0);
}

int main() {
    event_init();
    THREAD a = start 'accept_thread_function' as a thread;
    event_dispatch();
    THREAD::join(a);
}

问题是,从不调用read_function。

正确接受传入连接。 (叹息)

我正等着你对这个问题发表评论。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,看看Nick Mathewson撰写的关于libevent的(免费)精彩书籍:

http://www.wangafu.net/~nickm/libevent-book/Ref1_libsetup.html#_locks_and_threading

然后,您需要确保在调用event_dispatch()之前添加了事件。