Cocos2dx多线程的问题,程序跑一段时间后崩溃

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为基类的对象