问题标签 [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.

0 投票
1 回答
247 浏览

c - 在 libev 中,为什么默认循环在堆栈上?

是的,loop1 等于 loop2。但是为什么它们都在堆栈上,而不是堆上呢?而且,也许 ev_default_loop 是这样的,

但是 func 返回后,它的堆栈已经被清理干净了。那么它真的安全吗?

0 投票
0 回答
1817 浏览

c - 是否有任何支持 websockets 的简单 libev/libevent 实现?

我正在寻找一个使用接受 websocket 连接的 libev 或 libevent 的 echo 服务器示例:websocket 客户端连接、发送消息并接收它。SSL websockets 也应该被支持。有这样的东西吗?如果没有,可以插入 libev 或 libevent 回显示例的最小 websocket C 库是什么?

0 投票
2 回答
1569 浏览

libuv - libuv 只是 POSIX 系统上 libev 的一个包装器吗?

我真的很困惑libev和libuv。

libuv 只是 POSIX 系统上 libev 的一个包装器吗?

如果不是,那有什么不同呢?

0 投票
0 回答
323 浏览

cpu - libev 使用了两个 ev_timer 100%CPU

首先,我的英语很糟糕......这是我的代码:

这是 perf 说的:

perf cpu-clock 记录如下:

如果我将代码行“ev_loop(m_loop, 0)”更改为:

cpu 利用率低.. 为什么 ev_loop(m_loop,0) 和 ev_time 会消耗 100% 的 cpu 性能?

任何答案都有帮助,谢谢!

0 投票
2 回答
2204 浏览

c++ - Libev C++ 无法停止多线程应用程序中的动态循环

我用 c++ 和 libev 编写多线程服务器并且有一个问题。我在主线程中启动 default_loop,并在每个从线程中创建并启动 dynamic_loop。当我处理信号以停止进程时,我调用 break_loop(ev::ALL)。在默认事件循环停止但所有动态循环工作之后,需要帮助来停止动态循环。

环境:操作系统:Opensuse 13.1

编译器:g++ (SUSE Linux) 4.8.1 20130909

自由:4.15

资源:

输出:

编译标志:-O0 -g -std=c++11

链接器标志:-lev

UPD,带有炒锅代码的源代码:

0 投票
2 回答
3968 浏览

c - 套接字文件描述符中的可读/可写是什么意思?为什么常规文件不打扰呢?

由于我是最近学习 libev 的新手,所以io_watcher我不太了解 a 中的可读/可写概念。据我所知,linux系统编程中有一个参数:

O_ASYNC

当指定文件变得可读或可写时,将生成一个信号(默认为 SIGIO)。此标志仅适用于终端和套接字,不适用于常规文件。

那么,既然常规文件不会打扰可读/可写,那么可读/可写在套接字编程中的真正含义是什么?内核采取了哪些措施来确定套接字文件描述符是否可读?

考虑到一切都是文件的理念,每个具有不同描述符编号的套接字描述符实际上都指向同一个文件吗?如果是这样,我可以认为可读/可写问题是由同步引起的吗?

好吧,看来我问了一个愚蠢的问题。我真正的意思是套接字和常规文件都通过文件描述符读写,所以为什么套接字描述符有一个可读/可写的概念,而普通文件却没有。由于 EJP 告诉我这是因为缓冲区和每个描述符都有自己的缓冲区对,所以我的结论是:可读/可写概念是针对缓冲区的,如果缓冲区为空,则不可读,而缓冲区已满,则不可写。可读可写与同步无关,并且由于常规文件没有缓冲区,因此它始终是可读写的。

还有更多的问题:当说接收缓冲区时,这个缓冲区不是同一个东西int recv(SOCKET socket, char FAR* buf, int len, int flags);,对吧?

0 投票
0 回答
251 浏览

io - 从 poll/epoll 移植到 Libev

我是 libev 的新手,我很难理解它。我之前使用过 select()、poll() 和 epoll(),它们很容易理解和实现。我现在想从 epoll 切换到 libev。这是我目前正在使用 epoll 做的事情 -

这不是完整的代码,在此处发布时故意省略了错误检查和其他不相关的内容,因此您可以简单地专注于逻辑。我正在寻找 libev 等效方法来实现以下目标 -

  1. 添加fd进行监控
  2. 从监控中删除 fd
  3. 修改已被监视的 fd 的事件(读/写)。

有人可以为我提供上述 epoll 代码的粗略 libev 等效模板,将不胜感激。

0 投票
1 回答
1035 浏览

python - Python cassandra-driver:找不到使用libev所需的C扩展

我安装了 Cassandra python 驱动程序版本 2.5.1,其中包含所有必需的依赖项,即 libev4、libev-dev、gcc、python-dev。但是我在导入时遇到以下错误LibevConnection

“未找到使用 libev 所需的 C 扩展。这可能意味着您在安装驱动程序时没有所需的构建依赖项”

我尝试重新安装甚至安装了最新版本的驱动程序,但没有成功。我正在使用 Ubuntu 12.04。

0 投票
1 回答
596 浏览

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

我在我的 Linux 'c' 应用程序中将 libev 用于计时器和 io 事件,并且我想将自定义数据与事件相关联。在 libev 文档中,它提到了关联自定义数据,但没有给出示例。

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

0 投票
2 回答
86 浏览

perl - 使用 perl AnyEvent 测量单个时间

我需要获取许多 http url,我使用 AnyEvent::HTTP 来执行此操作对于每个 URL 我需要测量所花费的时间我该怎么做?

我的代码(精简)在这里