libev:如何将自定义数据与观察者关联?

时间:2015-11-30 22:35:24

标签: c libev

我在我的Linux' c'中使用libev作为计时器和io事件。应用程序,我想将自定义数据与事件相关联。在libev docs中,它提到associating custom data,但没有给出任何例子。

有人可以分享他们如何在应用程序中执行关联的自定义数据吗?

1 个答案:

答案 0 :(得分:0)

而不是仅仅将观察者传递给start函数:

ev_io_init(&io_watcher);
ev_io_start(EV_A_ &io_watcher);

创建一个以观察者为第一个成员的结构并传递:

struct client {
    ev_io io;
    int socket;
};

// ... later ...

struct client *my_client = calloc(1, sizeof(struct client));
my_client->socket = socket;

ev_io_init(&(my_client->io), my_cb, socket, EV_READ);
ev_io_start(EV_A_ &(my_client->io));

// ... later ...

static void my_cb (struct ev_loop *loop, ev_io *w_, int revents) {
    struct client *w = (struct client *)w_;
    // ...
}

这就是documentation所说的,以及我在自己的项目中使用的内容。