我有一个C++库,客户端应用程序使用这个库从服务器查询数据。该库创建一个单独的线程与服务器通信,查询结果将作为参数传递给回调函数。
现在我想将这个C++库包装成Node.js本地模块,由于回调函数是在该库自己的线程中调用的,为了将查询结果传递到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是否提供了更好的解决方案,或者我应该使用其他线程库。
现在我想将这个C++库包装成Node.js本地模块,由于回调函数是在该库自己的线程中调用的,为了将查询结果传递到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是否提供了更好的解决方案,或者我应该使用其他线程库。