這可能是一個Perl的專家一個簡單的問題 -Perl的多個子程序
我試圖運行一個腳本,理應做到這一點>
Main
{
While (true)
Call Sub A
Call Sub B
Call Sub C
}
Sub A
{
Go execute a method A for whatever it needs to do ---
before next time method A runs it need to wait atleast 60 seconds but i still want to call method B in these 60 seconds.
}
Sub B
{
Go execute a method B for whatever it needs to do ---
before next time method b runs it need to wait atleast 60 seconds but i still want to call method C in these 60 seconds in mean time.
}
Sub C
{
Go execute a method C for whatever it needs to do ---
before next time method C runs it need to wait atleast 60 seconds at this moment control should be back in Main and wait for first 60 seconds of A to expire so that Sub A can be called
}
我的問題: 問:什麼是最好的和優化的方式,我可以做到這一點 - ?
問:如果我在每個子再下一子就不會被調用,甚至直到60秒把睡眠60到期,就會耽誤整個處理。
問:我想3級潛艇稱爲每60秒的順序
Q最後,如果我需要調用2級潛艇在每60秒和最後一個子每隔一小時 - 我該怎麼做呢?
評論 - 我的想法是把UTC作爲一個變量,並將其存儲在一個變量,並保持檢查的時間,如果時間過期不是打電話個別潛艇,但不知道是否運行的代碼它最佳的方式。
執行子程序每次取多秒?總和總是小於60秒?如果A在60秒內完成但B尚未完成,A應該再次運行嗎?那麼C呢?您可以使用多個線程,所以有一個運行的A-線程在沒有更大的頻率,每60秒一次,和B-線程B和C型線對C? –
使用線程可能是去這裏,但請記住,如果你的潛艇與普通的全局變量混合的方式(全球在不僅在各個子),你必須確保沒有兩個線程試圖修改同變量在同一時間。這不是一項微不足道的任務。 – DeVadder
因此,從理論上講,任何時間都不應該超過幾秒(這些是SOAP調用),而我的測試顯示它可能需要很少的秒數,絕對總和不會等於或超過60秒。但我又想採取最佳實踐,而不是依靠我的想法.....所以我可以使用多線程程序(我不知道如何?)我需要一些僞代碼的幫助,如果可能的話在Perl中。並解釋它將如何工作......感謝並感謝您的迴應。 – Nik