问题:
目前在做关于nodejs和C++交互,就是js将自己的函数以参数的方式传递到C++,C++进行异步回调,但是该回调需要在主线程中执行。
现在的情况是我又开了一个子线程(必须开),
然后等待该子线程执行结束之后,由主线程执行回调(不能在子线程中执行)。
其实,场景就是子线程执行的时候不能阻塞主线程(主线程也就是js线程,可以执行界面操作),
又要在子线程结束之后,程序回到主线程中执行。
尝试过的方法:
之前用libuv开了一个子线程,利用libuv主线程里面进行一个事件循环,
然后让我的子线程阻塞libuv的子线程,这样不影响主线程的工作,
但是这个模型过于麻烦,子线程和libuv的子线程是同一个级别的,
应该不需要libuv同样也可以完成,我想的是利用C++事件和消息机制,但是了解不够深入。
查了看了C++这方面的内容,大多数集中在msgwaitformultipleobjects和PostThreadMessage,
但是这些好像都是针对MFC界面的,
例如msgwaitformultipleobjects网上例子中都是拿一个while循环监听消息,
这样做在退出while循环之前,担心应该会卡死js界面操作。
有没有朋友做过这方面的,求指点!!
你的主线程本身会有个自己的event loop,子线程往它的事件队列里面post一个event就行了,loop下一轮就会被执行到