2010-07-02 80 views
0

我有一個守護線程,它以指定的時間間隔醒來做一些任務。現在我需要將另外兩個任務添加到線程&這些任務有自己的時間間隔。像守護線程以不同的時間間隔喚醒

  • 每x秒後爲之做任務1
  • 後每Y秒做任務2
  • 後每ž秒做任務3

所以基本上,我需要拿出一個睡眠邏輯確保所有任務都在正確的時間完成。什麼是最好的做法呢? 我的想法是,每個任務的執行時間都是一個算術級數,所以我需要將每個任務對應的AP對應起來,使用該系列來計算我需要睡眠的時間間隔以及下一個要執行的任務。這種方法有意義嗎?

回答

0

你或許可以做這樣的事情:

now = time_in_seconds() 
time_since_task1 = x - (now % x) 
time_since_task2 = y - (now % y) 
time_since_task3 = z - (now % z) 

shortest_interval = min(min(time_since_task1, time_since_task2), time_since_task3) 
sleep(shortest_interval) 

然後你可以檢查「新now」等於0國防部X,Y,Z,並做必要的任務。

+0

你能解釋一下邏輯嗎,不知道我懂了。 time_in_seconds返回什麼?這是幾秒鐘內的當前時間嗎? – Raam 2010-07-02 14:24:48

+0

@Raam:理想情況下,它應該是程序啓動後的時間 - 任務的參考起點。 – casablanca 2010-07-03 03:19:44

+0

raam:當前時間,以秒爲單位。減去開始時可能以秒爲單位的時間(這將對每個任務的首次運行產生影響)。 – Vatine 2010-07-03 20:06:22