我有一個perl對象,裏面有幾個函數。每個功能在主程序中調用一次。我想並行運行一些功能來節省時間。由於某些函數依賴於之前函數的結果,因此我無法將它們全部運行在一起。perl中的線程同步/調度
我認爲是這樣的:
- 對於每個功能不斷被初始化爲假,並通過當它結束功能設置爲true的標誌(例如
func1
的最後一行是$is_func1_done = 1
) 。 使用一個循環啓動每個函數,該循環等待直到它所依賴的函數的所有標誌都爲真。例如:如果
func1
取決於func2
和func3
則:sub func1 { while (!($is_func2_done && $is_func3_done)) { # do nothing } # do work }
然後我就可以立即開始對每個功能的線程,但每個功能的實際工作將開始只有當它準備。這有意義嗎?我在旗幟上需要任何鎖嗎?正在使用這樣的while
循環常見? - 這個名詞忙着等待......也許我的大部分CPU時間將花費在這些while
上?有沒有更標準的解決方案呢?
非常,非常密切相關的討論http://stackoverflow.com/questions/3448167/basic-thread-hanlding-in-perl – pilcrow 2010-08-12 17:48:41
@ pilcrow謝謝,我會試試看! – user418673 2010-08-12 17:57:12