void HelloWorld::menuCallback(Ref* pSender)
{
std::thread tThread(&HelloWorld::ActionControlThread,this);
tThread.detach();
}
void HelloWorld::ActionControlThread()
{
while (true)
{
if (_bNext)
{
_bNext = false;
this->scheduleOnce(schedule_selector(HelloWorld::Run),0.0f);
//std::this_thread::sleep_for(std::chrono::milliseconds(250));
}
}
}
void HelloWorld::Run(float dt)
{
Vec2 movePos(0.0,0.0);
movePos.x = _bAction?100:-100;
auto moveBy = MoveBy::create(0.2, movePos);
auto jumpBy = JumpBy::create(0.2,Vec2(0,0),50,1);
auto callNextGoFunc = CallFunc::create(CC_CALLBACK_0(HelloWorld::NextGO, this));
auto spawnAction = Sequence::create(Spawn::create( moveBy,jumpBy,nullptr),callNextGoFunc,nullptr);
_pUserSprite->runAction(spawnAction);
}
void HelloWorld::NextGO()
{
_bAction = !_bAction;
_bNext = true;
}
```
如上述代码,程序在init中创建了一个精灵对象,点击按钮时创建一个线程,线程控制scheduleOnce去定时让精灵runAction执行重复动作,程序执行一段时间后就崩溃,请问这是怎么回事?
cocos2dx不是线程安全的
没有什么解决办法吗?
如果开的多线程中我只是改变几个bool值,这种情况会不会对程序有影响?
线程里不推荐包含任何操作Ref为基类的对象