如何多次使用uv_queue_work?

时间:2015-10-26 12:58:40

标签: c++ node.js multithreading libuv

我正在为Node制作一个C ++插件。而且我想多次运行uv_queue_work而不必睡觉主线程。知道如何做到这一点?

到目前为止,我已经做到了这一点:

void main(const FunctionCallbackInfo<Value>& args) {
//here goes my main code

//Here I schedule the worker, to run BEFOREmethod in a new thread, and AFTERmethod in the main thread
uv_queue_work(uv_default_loop(), req, BEFOREmethod,(uv_after_work_cb) AFTERmethod);

return callback;
}



void BEFOREmethod(uv_work_t* req){

//here goes the code that runs in new thread
usleep(200000);
}




void AFTERmethod(uv_work_t* req, int status){

//here goes the code that runs in main thread

//Then we schedule the uv_queue_work again
uv_queue_work(uv_default_loop(), req, BEFOREmethod,(uv_after_work_cb) AFTERmethod);
}

所以这个工作,我可以重新安排uv_queue_work,但是内存泄漏,如果我保持运行,内存使用量不断增加。但我还没有找到另一种方法。如果有人有想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!工作完成后,工作人员显然会自行释放内存,因此我可以继续这样做。内存泄漏是我的代码的错,因为我正在分配内存而不是在其他地方释放它(完全隐藏我没有看到它),但现在它已经解决了。

谢谢!