我正在为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,但是内存泄漏,如果我保持运行,内存使用量不断增加。但我还没有找到另一种方法。如果有人有想法,我将不胜感激。
答案 0 :(得分:0)
我找到了解决方案!工作完成后,工作人员显然会自行释放内存,因此我可以继续这样做。内存泄漏是我的代码的错,因为我正在分配内存而不是在其他地方释放它(完全隐藏我没有看到它),但现在它已经解决了。
谢谢!