问题标签 [libuv]

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 回答
2509 浏览

c - libuv:如何在出现错误时优雅地退出应用程序?

我有一个使用 libuv 库的应用程序。它运行默认循环:

应用程序在失败的情况下如何优雅地退出?目前我正在像下面的例子中那样做:

应该uv_loop_delete调用函数吗?它有什么作用?它会丢弃所有待处理的回调函数吗?它会关闭所有当前打开的 TCP 连接吗?我必须在退出之前手动完成吗?

PS:不能添加标签'libuv'(低于1500声望)。有人可以创建并添加它吗?

0 投票
1 回答
822 浏览

c++ - 从套接字对象获取 fd 或句柄

我想为 node.js 创建一个本机 (c++) 模块,它能够将套接字发送到另一个节点进程,这与当前进程完全无关。为此,我坚持使用辅助库,它有一个非常非常简单的 API。我现在要解决的问题是如何获取 node.js 的 fd 或套接字对象的句柄。

tcp_wrap.cc&中有一个 TCPWrap 类tcp_wrap.h,它有一个名为 的属性handle_,它包含一个uv_tcp_t来自 libuv 的对象,但该属性是私有的。我也不能#include,因为它只是 node.js 的一个模块,而不是直接在 node.js 本身中。我不知道将源文件复制到我的模块中是否是一个好主意只是为了获得那个类......

你有什么想法我该怎么做吗?

我不必在windows上运行,很难。

谢谢!

0 投票
1 回答
688 浏览

c++ - 困难的node.js + libuv + v8错误

我在 node.js c++ 插件中使用uv_queue_work做一些并行工作。

一切正常,直到我尝试从 Complete 方法回调到 JS 。

我得到:CHECK(thread_local_top()->TryCatchHandler() == that) 失败。

关于可能导致这种情况的任何指示?

我正在使用以下代码进行回调:

0 投票
4 回答
61956 浏览

c++ - libuv 与 Boost/ASIO 相比如何?

我会对以下方面感兴趣:

  • 范围/功能
  • 表现
  • 到期
0 投票
1 回答
798 浏览

c++ - 如何从不同的线程调用主 v8 循环中的函数

我正在尝试为涉及神经网络的 nodejs 实现音频模块。

该神经网络有 2 种类型的节点

  1. 纯 C++
  2. 基于 JAVASCRIPT 的 C++(涉及调用 javascript 函数)

据我所知,不可能从不同的线程调用任何涉及 v8 的函数。如果我回到主线程,我将失去我在神经网络中的遍历。

如何实现从不同线程调用主线程中的函数?

0 投票
1 回答
1104 浏览

node.js - 如何使用 node-gyp 根据节点版本有条件地为 node.js 编译本机代码?

我有一些针对 node.js 模块的 C++ 代码,它是为 node 0.8 及其增强的 libuv 编写的。具体来说,我正在使用 uv_mutex_* 函数,这些函数在节点 0.6 中包含的 libuv 中不存在。我想有条件地嵌入这些函数的 pthreads 等价物,但仅限于在旧版本上构建时。

在节点 0.8 上构建时,这应该给我一个跨平台构建(Windows 和 Linux),如果节点版本是 0.6,它应该给我一个正常运行的 Linux 版本。

节点版本是否有预处理器#define?我找不到一个。我能想到的最好的办法是在 binding.gyp 中做一些笨拙的事情,以尝试根据 <@(node_root) 猜测版本,并​​以某种方式将其按摩为“定义”值。肯定有更好的办法!

0 投票
1 回答
1982 浏览

c++ - 在类中使用 libuv

我正在尝试为 C++ 库编写 nodejs 绑定,但我似乎遇到了障碍。

我正在尝试对 C++ 库的所有调用进行异步调用,这就是我使用libuv. 我基本上遵循教程。

我希望能够从 libuv 调用类成员函数uv_queue_work。看看这段代码——

基本上我希望WorkandAfter函数data在类的元素上起作用。然而,这似乎不起作用。我尝试将指针从 type转换Work为. 但这似乎也不起作用。Aftervoid test::(*)(uv_work_t*)void (*)(uv_work_t*)

你们能给我一些关于如何解决这个问题的建议吗?

0 投票
1 回答
2130 浏览

c++ - node.js 内部结构:如何找出 `process.binding('eval')` 的定义位置?

  • 如何找出 node.js 的 C++ 源代码中定义了我可以访问的 JavaScript 对象的位置process.binding('eval')?- 我已经发现它在这种特殊情况下,但是:当我只看一下目录概述/src/node_script.cc时,我怎么知道在哪里可以找到该模块?我不想单步执行所有文件以查找模块。/src//src/
  • 我在哪里可以找到一些关于 s 内部的深入信息process.binding()

谢谢。

0 投票
2 回答
750 浏览

javascript - Node.js 什么时候使用异步有意义?

我问自己什么时候与 node.js 上的回调异步是有意义的。当我使用 I/O、数据库和其他所有阻塞或在我的其余代码中的所有内容时,它是否有用?

例如,我有一个棋盘游戏的“布局器”。它创建一个具有给定 json 布局的板实例。我知道将异步用于 I/O(读取 json 布局文件)是有意义的,因为这会阻塞。例如,foreach 循环怎么样?它应该是异步的吗?底层的 libuv 是否从中受益?

这是带有异步库的版本:

这就是没有异步链接的版本

谢谢你的时间!

问候,马库斯

0 投票
1 回答
3716 浏览

c++ - 如何在qt中做异步文件io?

我想知道如何在qt中实现异步文件io?这甚至可以在 vanilla qt 中实现,还是有人需要使用另一个库(例如 libuv)来实现这样的事情?我在看 QDataStream 但即使它是一个“流”,它也不是非阻塞的。我想一种解决方案是制作一个在内部使用 libuv 的自定义 QIODevice,然后可以与 QDataStream 一起使用,但不确定从哪里开始。有任何想法吗?

感谢您提供的任何帮助。