想象一下,您需要从远程服务器获取数据。检索Worker thread
每30分钟启动一次N partitions of data
。
private Int32 timeout = 60000*30;
public void Start() {
this.workerThread = new Thread(this.ImportDocuments);
this.finishedEvent = new AutoResetEvent(false);
this.workerThread.Start();
}
// ...
while(!this.finishedEvent.WaitOne(timeout)) {
// fetch/analyze/process data
}
如果严格定义配额,比如每次通话150 documents
,我应该真的使用timeout
吗?工作线程会在没有定义超时的情况下重新启动吗?
答案 0 :(得分:1)
要等待AutoResetEvent 而没有超时可能导致无限等待;它使工作线程依赖于外部效应,从而易受攻击。
这就是为什么我一般都赞成使用超时。
如果没有超时,只有while(true)
(或类似),工作线程将连续旋转。所以它不会重新开始,它会循环播放。