求教关于孩子教育问题Scheduler的问题

Pages: 1/3
主题 : 求教~关于Scheduler的问题
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
来源于&&分类
求教~关于Scheduler的问题&&&
本帖被 偶尔e网事 从 Cocos2d-x讨论区 移动到本区()
我在使用引擎过程中,看到log会偶尔打出“ warning: you CANNOT change update priority in scheduled function”这样的警告。。请问是什么操作会导致这种情况出现呢?使用的版本是cocos2d-js-v3.0-rc0看了下代码:void Scheduler::schedulePerFrame(const ccSchedulerFunc& callback, void *target, int priority, bool paused){    tHashUpdateEntry *hashElement =    HASH_FIND_PTR(_hashForUpdates, &target, hashElement);    if (hashElement)    {        // check if priority has changed        if ((*hashElement-&list)-&priority != priority)        {            if (_updateHashLocked)            {                CCLOG(&warning: you CANNOT change update priority in scheduled function&);                hashElement-&entry-&markedForDeletion =                hashElement-&entry-&paused =                            }            else            {                // will be added again outside if (hashElement).                unscheduleUpdate(target);            }        }        else        {            hashElement-&entry-&markedForDeletion =            hashElement-&entry-&paused =                    }    }    // most of the updates are going to be 0, that's way there    // is an special list for updates with priority 0    if (priority == 0)    {        appendIn(&_updates0List, callback, target, paused);    }    else if (priority & 0)    {        priorityIn(&_updatesNegList, callback, target, priority, paused);    }    else    {        // priority & 0        priorityIn(&_updatesPosList, callback, target, priority, paused);    }}貌似我没有修改过scheduler的优先级,为什么会报出这个警告呢?
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
没人遇到么??自己顶。。。
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
等。。接着等
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
级别: 新手上路
UID: 227830
可可豆: 45 CB
威望: 41 点
在线时间: 69(时)
发自: Web Page
帮楼主顶,同样的问题,cocos2d-x v3.2版本。使用armature动画的时候出现得相当频繁。
级别: 新手上路
可可豆: 14 CB
威望: 14 点
在线时间: 0(时)
发自: Web Page
“ warning: you CANNOT change update priority in scheduled function”意思大概是 在 scheduled 回调函数里面你不能改变 priority 优先级
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
终于有帮顶的了
级别: 新手上路
可可豆: 17 CB
威望: 17 点
在线时间: 3(时)
发自: Web Page
级别: 新手上路
可可豆: 277 CB
威望: 257 点
在线时间: 84(时)
发自: Web Page
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
Pages: 1/3
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版查看: 1604|回复: 5
请教一下经常看到的multi-thread scheduler的问题
精华主题学分
勤奋农民-感谢提供高质量信息和讨论, 积分 508, 距离下一级还需 492 积分
在线时间 小时
注册一亩三分地论坛,查看更多干货!
才可以下载或查看,没有帐号?
题目的描述在这里:
比如说如果闹钟是这样的:
public class Alarm{
& & public long getAlarmTime(){}& & //time in ms
& & public long setAlarmTime(){}
这个scheduler是不是应该用一个PriorityQueue&Alarm& pq,然后comparator就是alarm的时间。要检查闹钟时间是不是到了应该用个while loop:
while(true){
& & long currentTime=getCurrentTime();
& & long nextAlarmTime=pq.peek().getAlarmTime();
& & if(currentTime&nextAlarmTime)
& && && &try{
& && && && &&&Thread.sleep(1000);
& && && &}catch InterruptedException(e){//handle exception}
& && && &pq.poll().showAlarm();
我想问的是,这种方法对嘛?还有Thread.sleep(1000);这里,我觉得比较有效率的可能是Thread.sleep(nextAlarmTime-currentTime);但是考虑Thread.sleep()无法保证真正这个thread到底会休眠多久,所以感觉每一秒check一下更安全,但是这样就要不停的check.
精华主题学分
在线时间 小时
关注一亩三分地公众号:Warald_一亩三分地
要不这样,比如nextAlarmTime-currentTime是24000ms,那么就先让线程睡一半时间,即12000ms。假设线程实际13000ms后才醒,那么还剩11000ms,然后再睡11000/2 = 5500ms. 线程可能6000ms后才醒,还有5000ms,然后再睡2500ms,结果这次线程调度时卡了一下,睡了4000ms,醒来时发现只剩1000ms。于是干脆不睡了,就开一个循环一直检查CPU时间,到时间马上叫人起床。
这样,在T时间内,线程的时间执行时间是k*log(T) + T'。其中T'是最后决定不睡的那段时间的阈值。这样能够在一定程度上减小睡过的概率,而CPU占用比起纯polling来也有不小的改进。
另,我本人有时在精神非常紧张的情况下,很有可能也是采用这种睡眠模式……
精华主题学分
在线时间 小时
关注一亩三分地微博:Warald
要不这样,比如nextAlarmTime-currentTime是24000ms,那么就先让线程睡一半时间,即12000ms。假设线程实际1 ...
有道理!谢谢大神!
我也是。。。比如第二天有重要的事准备8点起床,我就6点醒来,决定继续睡,6点45又醒来,睡,7点10分醒。。。然后就决定不睡了。。。
精华主题学分
在线时间 小时
计算出离闹钟需要闹的时间差后,不能一次性休眠更多吗?比如时间差的9/10,折半是不是也是有点次数多呢,或者还有更精确的需求?
精华主题学分
在线时间 小时
计算出离闹钟需要闹的时间差后,不能一次性休眠更多吗?比如时间差的9/10,折半是不是也是有点次数多呢,或 ...
取9/10完全可以吧。我只是想表达“粗到精逼近”这么个思想。事实上可以根据具体闹钟所需定时的长度来选择休眠时间占总时间的百分比。
我很想知道真正的这类系统中是如何实现精确计时的。Java的Sleep的精确度受操作系统线程调度负载,优先级等多种因素影响,睡过的可能性很大。即使用上面的方法逼近,在极端情况下还是有可能会睡过;如何能够保证绝对不会睡过呢?
精华主题学分
在线时间 小时
取9/10完全可以吧。我只是想表达“粗到精逼近”这么个思想。事实上可以根据具体闹钟所需定时的长度来选择 ...
必须有个线程能够一直监听着才能保证不错过吧,就像定时任务一样,调用第三方定时器软件,到了时间后就发起闹钟任务,只不过监控时间的程序没有自己写
<form method="post" autocomplete="off" id="fastpostform" action="forum.php?mod=post&action=reply&fid=84&tid=156200&extra=&replysubmit=yes&infloat=yes&handlekey=fastpost"
onSubmit="
// TODO Howard 11/3/2015
var sbtn = $('fastpostsubmit');
sbtn.disabled =
sbtn.innerHTML = ' 回复发表中... ';
sbtn.setAttribute('background', sbtn.style.background);
sbtn.setAttribute('bordercolor', sbtn.style.borderColor);
sbtn.style.background = '#C7C7C7';
sbtn.style.borderColor = '#8B8B8B';
var form =
// --product--
var isValid = fastpostvalidate(form, null, 0);
if(!isValid) reoverBtn();
return isV
// --product--
// --testing--
//setTimeout(function() {
// var isValid = fastpostvalidate(form, null, 0);
// if(!isValid) reoverBtn();
//}, 2000);
// --testing--
您需要登录后才可以回帖
回帖并转播
回帖后跳转到最后一页
一亩三分地推荐 /5
地主Warald亲手做你的申请,针对你的背景和目标,考虑申请、学习、就业、移民等系列问题,制定申请策略。
“offer”指全额奖学金,免学费全免+每月工资,Berkeley, CMU, JHU, UIUC, Gatech, UMich, UCLA, Columbia,欢迎观赏。
电子工程、计算机、统计、金数金工、化工等, Stanford, Berkeley, CMU, Cornell, Yale, Columbia, Chicago, Duke, UPenn, UIUC, Brown, UMich, JHU等
有留学、申请、找工、职业规划上的难题?先上论坛提问!
论坛考古也帮不上忙,发帖得到的回答仍然不够?电话找Warald来解答!
WARALD新书上市啦:《你不知道的美国留学》清华大学出版社,各大电商发售
Powered by问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
新手在本地运行pyspider 在 UI 里面 创建project,但是执行的时候老是报:
connect to scheduler rpc error: error(10061, '')
问了下有些人说是要装什么东西,求教啊。。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不会用 windows,给个参考:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这种是因为scheduler默认用到了python自带的消息队列,不知道为啥在windows上用着有问题,这个时候换个消息队列就好了。比如说安装个redis,然后配置里面加上下面这个配置(redis是在本地):"message_queue": "redis://localhost:6379/db"
另外redis在windows上没有官方的,现在是微软开发的可以去这里下载:
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App【spring+quartz框架】scheduler.reschedulejob后执行了多次
一、quartz.properties中配置:
org.quartz.threadPool.threadCount = 8
org.quartz.threadPool.threadPriority = 5
二、XML配置文件中配置了job:
&bean id="monitorSMSJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&
&property name="targetObject" ref="server"/&
&property name="targetMethod" value="monitorSMS"/&
&property name="concurrent" value="true"/&&
&bean id="monitorSMSCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"&
&property name="jobDetail" ref="monitorSMSJobDetail"/&
&property name="cronExpression"&
&value&0/15 * * * * ?&/value&&!-- 每隔1分钟调度执行 --&
&/property&
三、实现类调度方法public void monitorSMS() { //scheduler.rescheduleJob(monitorSMSCronTrigger.getName(), Scheduler.DEFAULT_GROUP, monitorSMSCronTrigger); System.out.println("enter..");}
问题是:因配置了15秒执行一次调度,如果屏蔽掉scheduler.rescheduleJob这行代码,则每次是一个线程执行,如15:30:00 work_1执行,15:30:15 work_2执行,以此类推;如果不屏蔽,则每次8个线程并发执行,且每个线程执行N多次(N无规律,几十次到上百次吧)求教大神,1 这是什么原因? 2 如果想让8个线程每次执行一遍应该如何做?
&property name="concurrent" value="false"/&&
是不是你想要的
--- 共有 1 条评论 ---
并不是的。这样设置了跟我问题描述的一样
有没有大神帮忙解答一下?

我要回帖

更多关于 我在百度求教的问题 的文章

 

随机推荐