我在我的 Linux 'c' 应用程序中将 libev 用于计时器和 io 事件,并且我想将自定义数据与事件相关联。在 libev 文档中,它提到了关联自定义数据,但没有给出示例。
有人可以分享他们如何在他们的应用程序中处理相关的自定义数据吗?
而不是像这样将观察者传递给 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_;
// ...
}
这就是文档所说的,也是我在自己的项目中使用的。