小编for*_*est的帖子

libuv线程通信

我有一个 C++ 库,客户端应用程序使用这个库从服务器查询数据。这个库创建了一个单独的线程与服务器通信,查询结果将作为回调函数中的参数传递。

现在我想将这个 c++ lib 包装到 nodejs 原生模块,因为回调函数是在这个 lib 自己的线程中调用的,为了将查询结果传递给 js 环境,我相信我必须使用 libuv 的 uv_async_send(uv_async_t* async) 方法来传递两个线程之间的数据。(如果我错了,请纠正我)

根据libuv 的文档

警告:libuv 将合并对 uv_async_send() 的调用,也就是说,并非每次调用都会产生回调的执行。例如:如果在调用回调之前连续调用 uv_async_send() 5 次,则回调只会被调用一次。如果在调用回调后再次调用 uv_async_send() ,则会再次调用。

这个警告是否意味着 uv_async_send 可能导致数据丢失?我想知道 libuv 是否为这个问题提供了更好的解决方案,或者我应该使用其他一些 thead 库。

c++ multithreading node.js libuv node.js-addon

4
推荐指数
1
解决办法
2049
查看次数

标签 统计

c++ ×1

libuv ×1

multithreading ×1

node.js ×1

node.js-addon ×1