Wolfram mathematica 在Mathematica中,ScheduleTask对使用的时间间隔有限制吗?

Wolfram mathematica 在Mathematica中,ScheduleTask对使用的时间间隔有限制吗?,wolfram-mathematica,mathematica-8,Wolfram Mathematica,Mathematica 8,我很难理解ScheduledTask[]。这是在V8中添加的 在Windows7上,64位,使用V8.01,运行以下代码时 dt = 0.01; c = 0; Dynamic[c] task = CreateScheduledTask[c += 1, {dt, 100}]; StartScheduledTask[task]; 我得到以51结尾的“c”,而不是预期的100 当我把上面的“dt”改成更大的值,比如说0.02秒,或者任何其他大于0.02秒的值时,每次只能得到100 如果我把‘dt’设

我很难理解ScheduledTask[]。这是在V8中添加的

在Windows7上,64位,使用V8.01,运行以下代码时

dt = 0.01;
c = 0;
Dynamic[c]
task = CreateScheduledTask[c += 1, {dt, 100}];
StartScheduledTask[task];
我得到以51结尾的“c”,而不是预期的100

当我把上面的“dt”改成更大的值,比如说0.02秒,或者任何其他大于0.02秒的值时,每次只能得到100

如果我把‘dt’设为0.005,那么结果是c=27。将“dt”设为0.0025,c变为18,依此类推

因此,“dt”限制(CPU时间粒度)似乎是0.02,以获得我想要的。这是20毫秒

但从其他网站上,我看到Windows7(当然取决于硬件)可以提供比这小得多的cpu时钟分辨率。可能是1-10毫秒

我是否遗漏了什么,或者我是否误解了这个函数

此函数的帮助说明

creates a task that will try evaluating expr once every time seconds up to count times total
使用Mathematica自己的文档,我找不到关于这方面的更多信息,但我可能忽略了它

此功能的文档是

谢谢 ps.要在完成后删除任务,命令为

RemoveScheduledTask[task]
或者要清洁所有东西:

RemoveScheduledTask[ScheduledTasks[]]

我拥有的硬件是:Intel i7 CPU 930,2.8 Ghz 4核

,尽管据报道windows计时器可以测量到ns粒度,但任务调度程序的粒度要低得多。我发现它报告(和)分别在10-15毫秒和20毫秒的倍数之间。因此,我认为您应该使用至少20毫秒的间隔来确保,然后您仍然不能保证获得插槽,因此您永远不应该依赖它。

CreateScheduledTask
文档中的“更多信息”下,它说“默认情况下,如果计算expr所需的时间大于时间,则跳过下一个挂起的计算。”因此,可能这就是这里的问题所在(尽管我认为将1添加到c所需的时间远少于0.01秒)。我认为时钟时间是限制,不是一个数字加1。在我的系统上,任务时钟的运行速度不能超过每个插槽20毫秒,即0.02秒。这就是我看到的。但我同意你的观点,关于这个函数的文档可以更详细、更清晰。+1,谢谢。是的,20毫秒实际上就是我看到的。So我的计算错误。已纠正。10-20毫秒与我读到的一致。这应在“可能问题”下的文档中提及。