gpt4 book ai didi

c++ - libev 自定义事件

转载 作者:太空狗 更新时间:2023-10-29 21:46:17 24 4
gpt4 key购买 nike

我正在尝试使用 libev 进行基于事件的编程。但是 libev 提供了一些事件,例如 EV_READ、EV_WRITE、EV_TIMER ..

那么,是否可以有一个属于我自己的自定义事件。

例如,我有来自套接字的连续消息流,我只对该消息流中的一种消息感兴趣。所以,它基本上就像

while(true)
{
Msg msg = getMessage();
if(msg != null && msg.id == ourId)
return msg;
}

因此,我想注册此类事件(仅满足 if 条件。)。它是自定义事件吗?如何将此事件指定给 libev。

我的意思是在 libev 中我们这样指定..

ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
ev_io_start (loop, &stdin_watcher);

我没有看到任何我们可以检查我们自己的事件的东西。可能吗?

最佳答案

不幸的是,你不能有一个自定义事件,因为 libev 不处理你的数据,只是检查是否有一些,或者你是否可以发送一些。

所以基本上,您必须:

  1. 使用 EV_READ 创建观察者
  2. 当观察者触发你的函数时,检查是否有你想要的消息:
    • 如果是,将其推送到您的消息队列
    • 如果没有,就跳过
  3. 运行 ev_loop,最好使用 EV_ONESHOT 和超时观察器。之后立即调用您的消息处理程序,它将检查消息队列并处理队列中的所有消息

关于c++ - libev 自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com