Aym*_*men 2 c++ multithreading pthreads cocos2d-x
即时通讯使用cocos2d-x V3.4,我仍然找不到如何使用多线程的好例子.我使用pthread作为工作线程来做一些后台处理.从pthread中,我触发一些自定义事件(Director :: getInstance() - > getEventDispatcher() - > dispatchEvent(&evt);)来更新UI.things工作正常,只要触发的事件不添加任何图形到UI(addChild).移动的精灵周围看起来没有任何问题.但是一旦pthread触发了一个需要添加ui节点的事件(EventCustom)(在我的情况下是DrawNode),我会得到一个黑屏.从我在网上找到的东西,pthread不应该发射那些事件.他只需填写事件队列并安排从UIThread中提取这些事件进行渲染.我所做的是将std :: vector作为单例类GameManager的成员.我的pthread推送到那个列表.我安排从该列表中拉出来.但我的应用程序一直在崩溃.所以我很确定我正在做的事情不是正确的方式.
小智 6
UI相关的东西必须在cocos线程上执行,否则根据我的经验可能会导致未定义的行为.您可以尝试以下步骤:
从pthread调用该方法将在cocos线程上执行,如下所示:
auto scheduler = Director :: getInstance() - > getScheduler();
scheduler-> performFunctionInCocosThread(CC_CALLBACK_0(YourClass :: updateUI,this));
这里在YourClass中定义的updateUI函数将负责执行与UI相关的操作.