在我的示例應用程序中,我基本上有兩個線程。從另一個線程調用Lua函數
主線程包含一個Lua發動機(未線程安全的)和寄存器一些C++函數到該引擎。然而,其中一個函數執行時間過長(因爲它通過互聯網下載一些文件),我希望Lua引擎在下載過程中繼續執行其他內容而不會阻塞。
因此,我希望把它異步的:當downloadFile()
功能從Lua調用,我創建了一個新的線程執行下載。然後,函數返回並且Lua引擎可以處理其他工作。當下載完成後,第二個線程需要告訴主線程它應該以某種方式調用一些附加功能processFile()
來完成它。
這就是我現在掙扎的地方:什麼是最簡單/最乾淨的解決方案來實現這個目標?
如果您不希望下載完成,只想在下載完成時收到通知,該怎麼辦?或者,在其他一些環境中:如果您有一些主線程並且您有第二個線程,例如以某些用戶輸入爲例,並且您希望在用戶輸入內容後立即中斷主線程?你不知道什麼時候你必須加入()這兩個線程,因爲你不知道用戶什麼時候會輸入什麼。 – Etan 2009-12-20 16:27:54
'join()'只是一個可能的同步調用的例子。使用'finished()'類型的函數輪詢下載狀態仍然很簡單。 – gwell 2009-12-22 00:41:37