如何在字节码虚拟机上使用 libuv
How to use libuv with a bytecode virtual machine
你会如何在字节码虚拟机中使用 libuv,假设我有这个功能
void vm_run(vm_t* vm);
启动虚拟机执行代码,只要用户的代码这样做,它就会保持 运行,现在我想在 VM 语言中添加异步内容,比如 setTimeout
/setInterval
和 JavaScript 一样,我可以向用户公开本机函数,但是何时真正开始事件循环,uv_run
阻塞直到没有事件剩余并且 VM 也会阻塞直到用户代码结束如何我会同时启动两者以保持 VM 异步运行吗I/O,我只是在努力在这种情况下正确理解事件循环的想法,请有人指导我走正确的道路。
我找到了方法,当正常执行结束时,你必须 运行 uv 事件循环来处理事件,所以我必须在 API 到 运行 函数中VM 随时可用(换句话说,vm_run 中的 return 并不意味着所有代码都已完成,我们将进一步执行更多功能)
你会如何在字节码虚拟机中使用 libuv,假设我有这个功能
void vm_run(vm_t* vm);
启动虚拟机执行代码,只要用户的代码这样做,它就会保持 运行,现在我想在 VM 语言中添加异步内容,比如 setTimeout
/setInterval
和 JavaScript 一样,我可以向用户公开本机函数,但是何时真正开始事件循环,uv_run
阻塞直到没有事件剩余并且 VM 也会阻塞直到用户代码结束如何我会同时启动两者以保持 VM 异步运行吗I/O,我只是在努力在这种情况下正确理解事件循环的想法,请有人指导我走正确的道路。
我找到了方法,当正常执行结束时,你必须 运行 uv 事件循环来处理事件,所以我必须在 API 到 运行 函数中VM 随时可用(换句话说,vm_run 中的 return 并不意味着所有代码都已完成,我们将进一步执行更多功能)