我有一个 c++ 库,客户端应用程序使用这个库从服务器查询数据。该库创建一个单独的线程与服务器通信,查询结果将作为回调函数中的参数传递。
现在我想把这个c++ lib包装到nodejs本机模块中,因为在这个lib自己的线程中调用了回调函数,为了将查询结果传递给js环境,我相信我必须使用libuv的uv_async_send(uv_async_t* async)方法来传递两个线程之间的数据。(如果我错了,请纠正我)
根据libuv 的文档:
警告:libuv 将合并对 uv_async_send() 的调用,也就是说,并非对它的每次调用都会产生回调的执行。例如:如果在回调之前连续调用了 5 次 uv_async_send(),那么回调只会被调用一次。如果调用回调后再次调用 uv_async_send(),则会再次调用。
这个警告是否意味着 uv_async_send 可能导致数据丢失?我想知道 libuv 是否为这个问题提供了更好的解决方案,或者我应该使用其他一些 thead 库。