我在我的Linux' c'中使用libev作为计时器和io事件。应用程序,我想将自定义数据与事件相关联。在libev docs中,它提到associating custom data,但没有给出任何例子。
有人可以分享他们如何在应用程序中执行关联的自定义数据吗?
答案 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所说的,以及我在自己的项目中使用的内容。