您如何在字节码虚拟机中使用libuv,说我有此功能
void vm_run(vm_t* vm);
这将启动虚拟机执行代码,只要用户的代码执行该代码,虚拟机就会一直运行,现在我想在VM中添加异步内容,例如JavaScript,setTimeout
/ setInterval
,我可以向用户公开本机函数,但是当实际启动事件循环时,uv_run
将阻塞直到没有事件发生为止,VM也将阻塞直到用户的代码结束为止,我将如何同时启动两者以保持VM正在执行异步I / O,我只是在努力了解这种情况下的事件循环的概念,有人请引导我走正确的路。
答案 0 :(得分:0)
我找到了方法,当正常执行结束以处理事件时,您必须运行uv事件循环,因此我必须制作一个API来随时在VM中运行函数(换句话说,从vm_run返回并不意味着所有代码都完成了,我们将进一步执行更多功能)