从ppapi_simple程序调用异步PPAPI函数

时间:2014-10-28 12:33:10

标签: google-nativeclient ppapi

我使用ppapi_simple进行NaCl C程序。我需要调用异步PPAPI函数,例如PPB_NetworkMonitor::UpdateNetworkList()

当我尝试天真地实现它时,我从未调用过传递给UpdateNetworkList()的回调。看一下ppapi_simple源代码,我注意到ppapi_simple从不在其内部消息循环上调用PPB_MessageLoop::Run(),这可能解释了为什么我的回调永远不会被调用。

在ppapi_simple程序中使用异步PPAPI函数的正确方法是什么?我应该创建自己的线程和消息循环吗?

编辑: 根据MessageLoop的文档,它只需要在一个线程上进行PPAPI调用。所以我尝试使用CallOnMainThread()在主线程上调用UpdateNetworkList()并且它确实有效 - 我的回调被调用。不确定这是最好的解决方案。

1 个答案:

答案 0 :(得分:1)

ppapi_simple运行主线程的所有内容,并假设用户正在使用阻止PPAPI调用。这使得移植代码更简单。如果您需要回调,您已经找到了两个解决方案:

  1. 在主线程(运行隐式消息循环)上调用该函数
  2. 启动一个新主题,运行一个消息循环,然后将工作发布到该消息循环以调用您的函数。
  3. 只要你在回调中没有做很多工作,我就说要调用主线程更简单。在主线程上做太多工作的顾虑是它可以使你的页面没有响应。