在一个项目期间观察了一年的估计我发现了一些奇怪的事情让我想知道基于证据的调度是否能在这里发挥作用?
那么,在估算期间让程序员将30小时任务分解为4或2小时步骤真的是个好主意吗?这不会提高标准偏差吗?(好吧,让他们分解 - 但也许在估计之后?!)
我需要在一天的特定时间运行一个可调用的.一种方法是计算now和所需时间之间的timediff,并使用executor.scheduleAtFixedRate.
有更好的主意吗?
executor.scheduleAtFixedRate(command, TIMEDIFF(now,run_time), period, TimeUnit.SECONDS))
我有去如下要求(相信我,我是太旧了功课的笑容)
我有一堆以不同频率运行的任务.他们还有一个开始"种子"日期/时间.起始种子在过去的某个时间,可能是一分钟前,可能是5年前.
我需要计算任务的下一个运行时间,使用开始种子日期/时间和频率 - 它不能简单地是"现在"+任务频率(对于那些在MS SQL Server上安排了作业的人来说这是一个熟悉的概念)
现在,这样做的愚蠢方法是采取起始种子并继续添加频率,直到它变得大于"现在".那不是最佳选择.这种天真的方式是采取开始种子日期,将其更改为今天的日期并保持时间不变,然后添加频率直到它比现在更大,但假设频率是24小时的倍数.
那么最好/最快的方法是什么?C#解决方案的奖励积分,但这是通用的,足以为任何语言制作一个有趣的拼图:)
我正在开发基于附加组件的应用程序.每个附加组件都使用调度程序.加载的附加计划任务.我的应用程序只运行一个实例.应用程序关闭,有时运行.因此,我需要使用Windows 7任务调度程序
如何在自己的应用程序上使用任务调度程序?
我需要从应用程序创建新任务
我需要在任务完成时,将消息发送到我的应用程序或调用我的应用程序的任何功能
是否可能?
怎么做?
我正在手动运行python脚本以获取JSON格式的数据.如何自动运行此脚本以每小时自动运行?
我正在使用Windows7.我可以使用像任务调度程序这样的工具吗?如果我可以使用它,我需要在批处理文件中放入什么?
我想在一个任务内部的间隔上运行一个函数.就像是,
Task t = Task.Factory.StartNew(() => {
while (notCanceled()) {
doSomething();
Thread.Sleep(interval);
}
});
Run Code Online (Sandbox Code Playgroud)
在这里使用Thread.Sleep()是一个坏主意吗?任务是长时间运行的,睡眠时间也可能很长(几分钟,甚至几小时).
一种替代方法是使用System.Timers.Timer或System.Threading.Timer.但是这两个都会导致产生额外的线程(Elapsed事件发生在新的线程池线程上).因此,对于每个重复任务,将有2个线程而不是1.任务已经是异步的,所以我不希望以这种方式使事情复杂化.
另一种行为相似的方式是使用ManualResetEvent,
ManualResetEvent m = new ManualResetEvent(false);
void sleep(int milliseconds)
{
m.WaitOne(milliseconds);
}
Run Code Online (Sandbox Code Playgroud)
由于永远不会调用m.Set(),因此它总是等待适当的时间,也是单线程的.这是否比Thread.Sleep()有任何明显的优势?
想知道这里最好的做法是什么.
思考?
我有一个关于调度线程的问题.一方面,我了解到线程被安排并被视为Linux中的进程,这意味着它们可以像使用传统方法的任何其他进程一样进行调度.(例如,linux中的完全公平调度程序)
另一方面,我也知道CPU也可能使用Switch on Event或Fine-grain等方法在线程之间切换.例如,在高速缓存未命中事件上,CPU切换线程.但是如果调度程序不想切换线程怎么办?他们如何就一个行动达成一致?
我真的很困惑两者:谁安排一个线程?操作系统还是CPU?
非常感谢 :)
根据我对Go调度程序的理解,Go调度算法部分抢占:当goroutine调用函数或阻塞I/O时会发生goroutine切换.
向频道发送消息时是否发生了goroutine切换?
// goroutine A
ch <- message
// some additional code without function calls
// goroutine B
message := <- ch
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我希望ch <- message在切换到B之前执行A 之后的代码,这是否有保证?或者A在A发送消息后立即安排ch?
我已经读过操作系统使用以下方法实现调度:
我的问题是:我刚才描述的方法是实现调度的唯一方法吗?