實時術語相當靈活。 「硬實時」傾向於意味着幾十微秒會使「正確工作」和「不正常工作」之間的區別,而不是所有的「實時」系統都需要這種實時性。
我曾經在一個手機無線電基站工作過,主板上的一個設備有一箇中斷,每2毫秒觸發一次,爲了正確操作(不會失去呼叫),我們必須處理中斷,即在中斷內部完成工作,並在100微秒內將新值寫入硬件寄存器 - 如果我們錯過了,會有掉話,如果在160微秒後沒有中斷,系統會這就是「硬實時」,特別是當處理器運行在幾十MHz時。如果您生產視頻播放器,則需要在幾毫秒的範圍內實時播放。
「顯示股票價格」可能在100ms範圍內。
對於網絡服務器來說,在1-2秒內做出響應可能是沒有問題的。
此外,「最差的情況比X更糟糕」意味着失敗(例如上面的情況有100微秒或掉線的情況 - 如果每幾周發生一次以上的情況就會很糟糕 - 甚至幾次一年是真的應該固定的東西)。這被稱爲「硬實時」。
但是其他系統錯過了最後期限意味着「哦,好吧,我們必須再做一遍」或者「一幀視頻閃爍一下」,只要它不經常發生,它可能是好的。這被稱爲「軟實時」。
許多現代硬件會使硬實時(10秒或100微秒範圍)變得困難,因爲圖形處理器只會停止處理器訪問內存,或者如果處理器變熱,引腳stopclk
拉100微秒...
大多數現代操作系統的,如Linux和Windows,都沒有真正的意思是「硬實時」。有些代碼段在這些操作系統的某些部分禁止中斷時間超過100微秒。
你可以幾乎肯定會得到一些不錯的「軟實時」(即,錯過最後期限是不是失敗,只是一個小麻煩)了主流的現代操作系統擁有現代化的硬件。它可能需要修改操作系統或專用實時操作系統(也許還有適當的特殊硬件),以使系統能夠實時實時操作。
但只有在世界上的幾件事情需要這一類的硬實時。硬實時要求通常由硬件來處理 - 例如,我上面描述的下一代無線基站具有更聰明的硬件,所以你只需要在下一個2年內給它新的值,幾毫秒,而且你沒有「瘋狂地在幾十微秒內完成它」。在現代移動電話中,GSM或UMTS協議主要由專用DSP(數字信號處理器)處理。
即使未達到最終期限的情況只發生一次,如果無法滿足特定的期限(或一組期限),「實時實時」要求是系統真正失敗。但是,不同的系統有不同的系統對截止日期的實際時間有不同的敏感度(正如Jerry Coffin所提到的那樣)。幾乎可以肯定的是,我們可以找到一些商業上可用的通用OS完全適合處理硬實時系統的實時需求的情況。還有一些絕對確定的情況是,如果沒有專門的系統,這種硬實時要求不可能實現。
我想說的是,如果你從OS希望亞毫秒級的保證,那麼桌面Windows或Linux不適合你。這實際上取決於操作系統和調度程序設計的整體理念,而構建硬實時操作系統需要考慮很多關於鎖定和潛在的一個線程以阻止另一個線程,從運行等。
我不認爲有一個答案適用於你的問題。是的,您當然可以在具有嚴格實時要求的系統中使用線程池。除非在操作系統中對此有明確的支持,否則你可能無法在毫秒級的基礎上完成。您可能需要有專用的線程和進程來處理最高優先級的實時行爲,這不屬於線程池本身。
對不起,如果這不是說你的答案是「是」或「否」,但我認爲你需要對操作系統的實際行爲進行一些研究,看看它能給出什麼樣的保證最壞的情況下)。你還必須決定什麼是最糟糕的情況,以及如果你錯過了最後期限 - 會有很多人死亡(飛機從天上掉下來),或者一些銀行家會損失數百萬美元,會發生什麼?燈會在路口兩個方向同時出現,還是從揚聲器中發出一些不好的聲音?
你只需要使用一個任務調度程序,它能*保證任務將被及時執行。這樣的任務調度器通常稱爲實時任務調度器。 – 2013-03-11 20:52:28
我會把它變得更強 - '實時'限制要求使用搶先式任務調度程序(實時保證程序,正如@ChrisDodd所解釋的那樣)。 – 2013-03-12 10:40:26