问题标签 [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.
asp.net - .net vNext Fedora 问题
我尝试按照本教程在 Fedora 20 上安装 vNext:http : //www.ganshani.com/blog/2014/12/shell-script-to-setup-net-on-linux/ 但是当我从 aspnet 启动 HelloWeb 示例时github repo 我收到这条消息:
我相信问题出在错误的libuv库中。你能帮助我吗?
multithreading - libuv - 事件循环和线程
我知道事件循环在单个进程上运行(因此,在单个内核上),但我想知道当我从那里启动线程时会发生什么。
uv_thread_create
如果我使用or启动多个线程uv_queue_work
,它们会在多个内核上运行(如果可用)?
我希望他们这样做,因为(至少在 Unix 上)一切都基于能够扩展到多核的 pthread,但我不知道。
另外,我现在无法编写代码来检查它,因为我在移动设备上。我只是发帖看看你们中是否有人已经知道答案。
节日快乐。
编辑:我已经制作了测试代码,一切都在一个核心上运行。
android - libuv(node.js 的异步库)可以在 Apple IOS / Android 上运行吗?
我已经对此进行了一些研究,但不清楚这是否可以在 IOS/Android 上使用 libuv?如果不可能,是什么限制了它?
我正在寻找一个 C++ 库,可用于 IOS、Android、Windows、OSX 和 Linux 上的相同应用程序。Libuv 似乎接近于满足对套接字和线程的所有要求。
node.js - 如何在 nodejs 进程中捕获 SIGABRT?
我使用 nodejs 中的请求模块每秒执行数百个请求,有时我会收到以下错误
我怎样才能捕捉到信号?
c++ - 引用静态成员函数和继承
我在 C++ 程序中使用 libuv。我有两个从 C 继承的 A 和 B 类。
我使用 libuv 并uv_signal_t
在 C 上声明了一个实例。创建一个实例uv_signal_t
需要传递一个回调。我可以轻松地将 lambda 传递给 C 函数来解决引用静态成员函数的问题:
但是如何为每个子类提供不同的回调实现呢?理想情况下,我会在 C.cpp 上实现一些通用代码,并在每个孩子上实现额外的代码。
更新
需要明确的是,我无法更改回调方法的签名,因为它是由 libuv 定义的。我可以编辑 libuv 的源代码,但我不确定我是否想深入。
c - 检测当前线程是否为libuv默认事件循环的主线程
我正在为 Node.js 编写一段 C 代码,并希望区分同步调用和异步调用。换句话说,我想检测我的代码是否在 V8 事件调度线程上运行,从主事件循环中调用,或者它是否从某个单独的工作线程调用。在前一种情况下,我可以立即回调 JavaScript,而在后一种情况下,我必须使用更复杂的异步回调。
libuv线程 API用于uv_thread_self
识别当前线程,并uv_thread_equal
比较线程是否相等。所以我需要的是找到uv_thread_t
主事件循环的。
c++ - 将第三方异步库与 NodeJS 集成
如何使用 asnyc 第三方库实现 Node JS 插件。我能够实现同步函数,但是当涉及到异步函数时,我不确定它是如何工作的。它应该从主循环调用还是应该在 async_work 中。
该场景类似于http://nikhilm.github.io/uvbook/threads.html#inter-thread-communication中解释的示例,但不是在 async_work 中下载,而是我想调用负责下载的异步函数。
示例异步函数:下载(网址,回调);
示例代码:
在这两种情况下(在主线程或 async_work 中调用)都没有调用我的回调,并且 JavaScript 一直在等待回调。
任何例子都非常感谢。
提前致谢。
c - libuv 分配的内存缓冲区重用技术
我正在将libuv用于我的广泛网络交互应用程序,并且我担心哪些重用分配的内存的技术在 libuv 回调延迟执行的情况下会同时有效和安全。
在非常基本的层,暴露给 libuv 用户,需要指定缓冲区分配回调以及设置句柄阅读器:
uv_alloc_cb
在哪里
但问题是:每次通过句柄发送新消息时都会调用此内存分配回调(例如,接收到来自uv_udp_t
句柄的每个 UDP 数据报),并且为每个传入的 UDP 数据报直接分配新缓冲区似乎非常非内存-明智的。
因此,我要求一种常见的 C 技术(可能在 libuv 回调系统引入的延迟执行上下文中)尽可能重用相同的分配内存。
另外,如果可能的话,我想保持 Windows 便携。
笔记:
- 我知道这个问题:libuv 是否提供任何工具来将缓冲区附加到连接并重新使用它?除了说明静态分配的缓冲区是不可行的事实之外,它已被接受的答案并没有回答如何使用 libuv 实际进行内存分配。特别是,它没有涵盖附加到句柄(通过包装器结构或句柄->数据上下文)。
阅读http://nikhilm.github.io/uvbook/filesystem.html,我注意到 snip 下的以下短语
uvtee/main.c - Write to pipe
:我们制作了一个副本,这样我们就可以从两个相互独立的 write_data 调用中释放两个缓冲区。虽然这样的演示程序可以接受,但您可能需要更智能的内存管理,例如引用计数缓冲区或任何主要应用程序中的缓冲区池。
但我找不到任何涉及 libuv 缓冲区引用计数的解决方案(如何正确执行?)或 libuv 环境中缓冲区池的显式示例(是否有任何库?)。
c - libuv:响应的 src 端口与进程正在侦听的端口不同
我有一个用 python-twisted 编写的客户端,它将一个 UDP 数据包发送到 IP aaa.bbb.ccc.ddd 的端口 1234,然后等待响应。我还有用 C-libuv 编写的 UDP 服务器,它侦听端口 1234 并响应客户端。
现在,当它们都在同一台机器上运行时,我可以从 UDP 服务器的日志中看到它接收到数据并且它已经发回了响应。但是客户端的日志没有显示任何收到任何 UDP 数据包的迹象。
当我使用wire-shark进行调查时,我发现了以下内容:
客户端的 UDP 数据包使用源端口 58963(不断变化)发送到端口 1234 的目标
UDP 响应(来自 UDPserver)也从 58845 发送回 58963
其后是 ICMP Destination unreachable (Port unreachable) msg。
这种行为的原因可能是什么?
node.js - nodejs(libuv) 如何在一个线程中执行所有操作
在事件驱动的异步编程(nodejs<- libuv)中,我们有主线程执行所有操作。
这里每个操作都有 i) 主操作和 ii) 回调操作。
这意味着主线程正在执行所有主要操作和回调操作。
例如,
假设所有 op-i 都是网络 i/o,因此它们将由主线程(使用轮询)执行,而不是使用一些工作线程池。
现在,主线程必须做:
现在,有人可以告诉主线程如何运行这些
三个操作(触发新的 n/w 操作,epoll 用于现有的 n/w 操作,运行回调以完成 I/O)
在 INTERLEAVED FASHION 中?(例如上述 6 次操作的示例序列)