★★★★★JS的同步问题(以经典的生产者-消费者为例) 当然有了,否则你用什么来解释上述现象,两个同时的setInterval却会轮换着被先执行或者这个不应该叫做优先权,但是代码执行确实是应该有个顺序和规则的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把pspeed 的赋为500则是1 13 35 57 7...... 这一行;var pspeed = 1000, cspeed = 1000;如果,你把pspeed和cspeed的初值设为不一样的值,便不会出现两次轮替。 awaysrain(绝对零度)(新的一年,新的开始) 用的什么CPU,推荐一下我的试过N次都是前面那个结果,真是郁闷 BlueDestiny(蓝色||命运)你的想法和本题无关,请抬头--同步问题 result 1 11 13 34 44 45 57 78 88 89 911 1112 1212 1213 1315 1516 1616 1617 1719 1920 2020 2021 2123 2324 2424 2425 2527 2728 2828 2830 3030 3032 3232 3234 34 我再帮忙顶一顶。尝试将代码转为VBS,结果一样。不过,我发现:我有两次运行发生了“意外”,其中一次是完全顺序输出,另一次是大概到了30多以后就顺序输出……仅仅只有两次,关键代码没有改动,不明白原因。——感觉像UFO,最近X-FILES看多了。 请大家把各自的CPU报上,怀疑和CPU有关,呵呵 我把代码改成了这样:<span id=d></span><script>function producer(i){ d.innerHTML = d.innerHTML + i + "<br/>"}setInterval("producer(1)",1000)setInterval("producer(2)",1000)setInterval("producer(3)",1000)</script>然后,(假设的)“指令指针”顺着producer(1~3)来回移动。——只有在间隔时间相同的情况下才会这样。……未完待续 PIII 500接着,对三个setInterval施加一些“干扰”,如下:setInterval("producer(1)",1000)setInterval("producer(2)",1000)for(j=0;j<10000;j++);setInterval("producer(3)",1000)就会发现,结果出现了改变。看来,存在“计算能源消耗问题”(我自己编的词汇)!接着做以下实验!……未完待续 接着将干扰setInterval()用的for循环终值改为100,就会发现,“干扰”失效了。——由此看来,好像CPU的确有点责任。继续做实验,希望把相同间隔的setInterval()的运行规律找出来!……未完待续 也许这是一个先进后出的堆栈:对于同一个cpu时刻内推入定时器的队列(并且动作的定时间隔相同的才推入同一个堆栈),则下一次执行的顺序会倒过来:setInterval("producer()", pspeed);setInterval("consumer()", cspeed);>>>>>producer();consumer();consumer();producer();producer();consumer();consumer();producer();...........仅仅是猜测,没有找到切实证据,呵呵 唉。_____________________________________________________________________________该问题已经结贴 ,得分记录: zairwolfc (300) 楼上最近到处搞笑啊?我也到这里来接一点分,呵呵。说实在的,为什么我当初没有想到先进先出原则呢?失算。——OH,My X-Files! 今天收到国外某强人的E-MAIL(询问这个问题的回复)。他的回答还真是明确:1、他不知道IE是如何实现setInterval()的,但不同的浏览器甚至不同的版本,实现方法可能改变(言外之意是这个问题没有实际意义)。2、不应该像这样使用setInterval(),完全是自找麻烦。——虽然这样的回答让我不满意,不过我还是回信向他表示感谢了。外国人都那么实际? 怎么能让浏览器不自动进行url解码? jquery li的问题 text onchange 无反应 iframe问题 急 请问怎么写,不可以零开头的数字的正则表达式,3Q javascript动态创建元素的问题 知道 梅花雪 的qq喽~~~~~~~~~~~~~~~~~~~~~~ 求一个正则表达式 怎样让输出的文本换行?转义字符吗? 寻求javascript做的网页计算器。 I 服了这段代码了! ◆200分:求解setInterval()奇怪现象的原因!fason/meizz/net_lover/ceocio/runmin等等大侠请帮忙!
1 1
3 3
5 5
7 7
......
1 1
1 1
3 3
4 4
4 4
5 5
7 7
8 8
8 8
9 9
11 11
12 12
12 12
13 13
15 15
16 16
16 16
17 17
19 19
20 20
20 20
21 21
23 23
24 24
24 24
25 25
27 27
28 28
28 28
30 30
30 30
32 32
32 32
34 34
不过,我发现:我有两次运行发生了“意外”,其中一次是完全顺序输出,另一次是大概到了30多以后就顺序输出……仅仅只有两次,关键代码没有改动,不明白原因。
——感觉像UFO,最近X-FILES看多了。
<span id=d></span>
<script>
function producer(i)
{
d.innerHTML = d.innerHTML + i + "<br/>"
}
setInterval("producer(1)",1000)
setInterval("producer(2)",1000)
setInterval("producer(3)",1000)
</script>
然后,(假设的)“指令指针”顺着producer(1~3)来回移动。
——只有在间隔时间相同的情况下才会这样。……未完待续
setInterval("producer(1)",1000)
setInterval("producer(2)",1000)
for(j=0;j<10000;j++);
setInterval("producer(3)",1000)就会发现,结果出现了改变。看来,存在“计算能源消耗问题”(我自己编的词汇)!接着做以下实验!……未完待续
——由此看来,好像CPU的确有点责任。继续做实验,希望把相同间隔的setInterval()的运行规律找出来!……未完待续
setInterval("consumer()", cspeed);>>>>>
producer();
consumer();consumer();
producer();producer();
consumer();consumer();
producer();...........仅仅是猜测,没有找到切实证据,呵呵
我也到这里来接一点分,呵呵。说实在的,为什么我当初没有想到先进先出原则呢?失算。
——OH,My X-Files!
他的回答还真是明确:
1、他不知道IE是如何实现setInterval()的,但不同的浏览器甚至不同的版本,实现方法可能改变(言外之意是这个问题没有实际意义)。
2、不应该像这样使用setInterval(),完全是自找麻烦。
——虽然这样的回答让我不满意,不过我还是回信向他表示感谢了。外国人都那么实际?