注册 登录
主题 : 发现问题一枚.(应该说不完善的地方?)
级别: 新手上路
UID: 278890
精华: 0
发帖: 9
可可豆: 83 CB
威望: 63 点
在线时间: 15(时)
注册时间: 2013-12-02
最后登录: 2015-08-20
0 楼:  发表于: 2014-02-24 18:02    发自: Web Page

发现问题一枚.(应该说不完善的地方?)   

版本: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并没有意义...,所以我这个担心是无谓的...
[ 此帖被g17号在2014-02-27 18:14重新编辑 ]

图片:QQ图片20140224174932.jpg
图片:111.jpg
级别: 新手上路
UID: 155984
精华: 0
发帖: 37
可可豆: 37 CB
威望: 37 点
在线时间: 36(时)
注册时间: 2012-07-20
最后登录: 2015-10-08
1 楼:  发表于: 2014-02-24 19:57    发自: Web Page
谢谢亲的反馈
已提交修改https://github.com/cocos2d/cocos2d-x/pull/5451
相应的issue创建:http://cocos2d-x.org/issues/4123
建议亲下次可以给我们github仓库直接提交代码,我们会在authors中列入您的大名哦
欢迎所有热爱cocos2d-x引擎的童鞋参与引擎的开发和维护.
级别: 新手上路
UID: 278890
精华: 0
发帖: 9
可可豆: 83 CB
威望: 63 点
在线时间: 15(时)
注册时间: 2013-12-02
最后登录: 2015-08-20
2 楼:  发表于: 2014-02-27 18:12    发自: Web Page
回 1楼(风语) 的帖子
嗷,刚才发现我是错的= =  这个是在子线程中push函数给主线程执行,这样function()只会在cocos的主线程中执行,主线程中执行这个PUSH并没有意义...
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部