问题标签 [libev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
libev - 你能优先考虑 libev 中的事件吗?
假设我有 2 个套接字正在监视事件,并且我真的希望首选套接字 1(即使以使套接字 2 饥饿为代价)。我将如何用 libev 做到这一点(我在这里问了关于 libuv 的相同问题,但看起来 libuv 不能这样做)?
例如,在使用 libevent 时,可以使用:
int event_priority_set(struct event *event, int priority);
当多个优先级的多个事件激活时,不运行低优先级事件。相反,Libevent 运行高优先级事件,然后再次检查事件。只有当没有高优先级事件处于活动状态时,才会运行低优先级事件。
c - libev 100% 的 CPU 使用率
我有一个使用 libev 作为事件循环的 tcp 服务器;对于我设置的新接受的套接字:
当一个新的连接到来时,我的服务器消耗了整个 CPU 周期,我有 100% 的 CPU 使用率。我的程序一直调用回调tcp_conn_on_event_cb,并将 revents 设置为 EV_WRITE
当我做
我有这个:
请问这个问题有解决方案吗?
c++ - linux c++ libev 官方示例显示冗余控制台行为
我刚刚尝试了 libev 的官方示例,如下所示。编译运行后,我看到一旦我从标准输入输入任何内容,就会触发事件,没问题。但是我输入的内容仍然被视为可靠输入,然后出现在我的控制台上。我的问题是:有没有办法避免这个控制台输入被提示到控制台,就像 libev 捕获和存储它一样?
libev中的任何方式都可以做到这一点?
我在这里粘贴官方示例:
c - 在 libev 事件回调函数中调用阻塞函数会阻塞整个应用程序吗?
我使用 libev 来开发我的事件驱动应用程序。我喜欢在事件中查询远程 mysql 服务器。所以,做mysql_real_connect阻止整个应用程序或只是my_read_cb
根据以下代码
c++ - AMQP-CPP RabbitMQ 基于异步事件的消费者不消费任何东西
我正在使用 AMQ-CPP 库 ( https://github.com/CopernicaMarketingSoftware/AMQP-CPP ) 连接到我创建的现有队列,但我无法读取任何内容。我已经测试过队列可以使用另一个库(https://github.com/alanxz/SimpleAmqpClient,它可以工作并且我使用消息),但它使用轮询方法,我需要一个基于事件的方法。
我的代码看起来像(基于提供的示例):
我在 Raspberry Pi 中运行代码:
可能是什么问题?可能我缺少队列的一些配置参数......我已经放置了一些调试跟踪并且通道创建没有发生。它在连接语句中阻塞:
c - Libev:如何安排尽快调用回调
我正在学习 libev,我偶然发现了这个问题。假设我想尽快处理某事但不是现在(即不在当前执行的函数中)。例如,我想将一些大型同步作业分成多个将排队的部分,以便其他回调可以在其间触发。换句话说,我想用 timeout 安排回调0
。
所以第一个想法是ev_timer
与 timeout一起使用0
。第一个问题是:效率高吗?libev 是否能够将0
超时计时器转换为高效的“尽快调用”工作?我认为不是。
我一直在研究libev 的文档,还发现了其他选项:
它可以通过使用准备或空闲观察者人为地延迟调用回调
所以空闲的观察者在这里可能不会很好,因为
当没有其他相同或更高优先级的事件挂起时,空闲观察者会触发事件
这可能不是我想要的。准备观察者可能在这里工作。但是为什么不检查观察者呢?我所说的上下文有什么根本区别吗?
这些文档建议的另一个选项是:
或者更偷偷摸摸地,通过重用现有的(停止的)观察者并将其推入待处理队列:
但这需要始终有一个停止的观察者。此外,由于我事先不知道我想同时安排多少个电话,所以我必须有多个观察者,并另外通过某种列表跟踪它们,并在需要时增加它。
那么我在正确的轨道上吗?这些都是可能性还是我错过了一些简单的东西?
c++ - libev,为什么在evloop中recv事件的编号是3?
在 libev 源代码 'ev.h' 中,我没有找到宏来定义数字 0x03
c++ - 如何在 Windows 10 上编译和运行使用 libev 的示例程序
如何使用 MinGW 在 Windows 10 上构建使用 libev 的 C++ 程序。任何人都可以告诉我如何编译和链接到在 Windows 10 上使用 libev 的示例程序。我成功地在 linux 上运行我们的 c++ 程序,并希望它也可以在 Windows 上运行。我是否也需要 cygwin 或者 MinGW 就足够了。请告诉在 Windows 10 上执行此操作所需的方式和工具
c - Epoll:它会默默地删除 fds 吗?
我一直在阅读libev 的源代码,偶然发现了这个评论:
a) epoll 默默地从 fd 集中删除 fds。因为没有任何东西告诉我们一个 fd 已经被移除,所以我们必须不断地“重新武装”我们怀疑可能已经改变的 fd(与 kqueue 相同的问题,但那里的成本要低得多)。
我一直在一些现代 linux 内核上使用 epoll(直接使用系统调用)进行一些测试,但我无法重现它。我没有看到“默默消失的 fds”有任何问题。有人可以详细说明一下并告诉我这是否仍然是一个问题?
c++ - 我可以在 Windows 上的 Libev 中使用计时器吗
我已将我的 C++ 应用程序从 Linux 移植到使用 Libev 的 Windows。但是当计时器在 libev 代码中启动时,我的代码中出现运行时错误......示例代码如下......
我们能够接受来自使用 libev、ev::io 的客户端的连接。但是当它触及 ev::timer 代码时我得到运行时异常。所以我的问题是我可以在 Windows 上克服这个问题吗?或者它是 Libev 在 Windows 上的限制......即它只支持套接字而不支持计时器等......