我使用ppapi_simple进行NaCl C程序。我需要调用异步PPAPI函数,例如PPB_NetworkMonitor::UpdateNetworkList()。
当我尝试天真地实现它时,我从未调用过传递给UpdateNetworkList()的回调。看一下ppapi_simple源代码,我注意到ppapi_simple从不在其内部消息循环上调用PPB_MessageLoop::Run(),这可能解释了为什么我的回调永远不会被调用。
在ppapi_simple程序中使用异步PPAPI函数的正确方法是什么?我应该创建自己的线程和消息循环吗?
编辑: 根据MessageLoop的文档,它只需要在一个线程上进行PPAPI调用。所以我尝试使用CallOnMainThread()在主线程上调用UpdateNetworkList()并且它确实有效 - 我的回调被调用。不确定这是最好的解决方案。
答案 0 :(得分:1)
ppapi_simple
运行主线程的所有内容,并假设用户正在使用阻止PPAPI调用。这使得移植代码更简单。如果您需要回调,您已经找到了两个解决方案:
只要你在回调中没有做很多工作,我就说要调用主线程更简单。在主线程上做太多工作的顾虑是它可以使你的页面没有响应。