子线程执行结束如何通知主线程执行回调函数?

问题:

目前在做关于nodejs和C++交互,就是js将自己的函数以参数的方式传递到C++,C++进行异步回调,但是该回调需要在主线程中执行。
现在的情况是我又开了一个子线程(必须开),
然后等待该子线程执行结束之后,由主线程执行回调(不能在子线程中执行)。
其实,场景就是子线程执行的时候不能阻塞主线程(主线程也就是js线程,可以执行界面操作),
又要在子线程结束之后,程序回到主线程中执行。

尝试过的方法:

之前用libuv开了一个子线程,利用libuv主线程里面进行一个事件循环,
然后让我的子线程阻塞libuv的子线程,这样不影响主线程的工作,
但是这个模型过于麻烦,子线程和libuv的子线程是同一个级别的,
应该不需要libuv同样也可以完成,我想的是利用C++事件和消息机制,但是了解不够深入。

查了看了C++这方面的内容,大多数集中在msgwaitformultipleobjects和PostThreadMessage,
但是这些好像都是针对MFC界面的,
例如msgwaitformultipleobjects网上例子中都是拿一个while循环监听消息,
这样做在退出while循环之前,担心应该会卡死js界面操作。

有没有朋友做过这方面的,求指点!!
阅读 4.7k
1 个回答

你的主线程本身会有个自己的event loop,子线程往它的事件队列里面post一个event就行了,loop下一轮就会被执行到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题