是否有可能跳到一個過程的分配時間量程的結尾?我有一個程序在一段共享內存上並行工作,然後所有進程都需要等待其他進程完成並在下一步之前同步。每個進程最多隻能執行一次迭代,因此任何時間差異都很小。我很肯定,即使是睡着了(1)會花費比我想要的更長的時間(截至目前我可以在約1.5秒內完成5000次,所以這會增加約20ms到一個測試)。跳到時間量子結束
某種忙碌的等待似乎是一個糟糕的主意,儘管這可能是我最終的結果。
我真的很想爲沿
while(*everyoneDone != 0) {
//give up rest of this time-quantum
}
它並不需要是實時線的東西,它只是需要要快。有任何想法嗎?
請注意,這將在多處理器機器上運行,因爲如果只有一個內核可以使用,現有的單線程版本的性能會更好。
我知道這是一個壞主意,這就是爲什麼我正在尋找替代解決方案。我只是無法找到它,因爲它看起來像我真正想要的。 – zebediah49 2010-06-25 14:26:50
是的,沒有違法意圖,與「不這樣做」我的目標是做出收益的其他答案。 – 2010-06-25 14:42:54
是的,我完全同意(這就是爲什麼我把第二段放在我的答案中)。目前還不清楚OP需要什麼同步原語(障礙意味着你提前知道這將是最後一個完成的線程)。 – caf 2010-06-26 04:43:21