1. 程式人生 > >究極難題 :一個執行10秒以上至無窮的呼叫函式,成功後有返回值。在多工執行緒中怎麼實現呼叫不卡住該執行緒?

究極難題 :一個執行10秒以上至無窮的呼叫函式,成功後有返回值。在多工執行緒中怎麼實現呼叫不卡住該執行緒?

究極難題 :一個執行10秒以上至無窮的呼叫函式,成功後有返回值。在多工執行緒中怎麼實現呼叫不卡住該執行緒?

Note:一旦呼叫函式,中途無法取消。

思路一:讓其執行在獨立執行緒內。加超時時間。
1. 在超時時間內函式有返回值,則函式執行結束。則獨立執行緒結束。
2. 在超時時間內函式沒有返回值,則讓函式跑飛,不在管理。同樣獨立執行緒結束。

結論:呼叫函式,設計不合理。

函式整改規範,window下:

  • 一個函式的執行時間不能超出1ms。
  • 函式若定義有返回的,必須在1ms內,給與返回值。
  • 超出1ms執行時間的函式,當修改為一個長處理任務。

長處理任務 規範:

  • 必須實現任務可取消。
  • 必須自帶超時時間。
  • 異常資訊,必須可以傳出。