版本:cocos2d-x 3.0 beta
相关函数:

CCScheduler->update ,CCScheduler->performFunctionInCocosThread
如图1
蓝色指向的函数被加锁了
所以这个函数里边就不允许执行performFunctionInCocosThread以push更多function到_functionsToPerform里边
好吧.
一般都是这么写吧.
if( !_functionsToPerform.empty() ) {
_performMutex.lock();
auto temp = _functionsToPerform;
_functionsToPerform.clear();
_performMutex.unlock();
for( const auto &function : temp ) {
function();
}
}
= = 写这个函数的人没什么编程经验吧(or太着急?)…
抱歉,刚才发现我是错的= = 这个是在子线程中push函数给主线程执行,这样function()只会在cocos的主线程中执行,主线程中执行这个PUSH并没有意义…,所以我这个担心是无谓的…