簡體   English   中英

.Net中的實時優先級

[英]Real Time priority in .Net

我有一個通過D2XX接口將音頻數據饋送到FTDI設備的應用程序。 當我的應用程序具有焦點時,它可以完美工作,並且只使用很少的CPU(5%)。 但是當我重擊CPU時(通過切換到其他應用程序或進行大量繪制),有時會在音頻中產生卡頓現象。

我嘗試了很多方法來防止這種情況發生(實時的進程/線程優先級,MMCSS調度等),但有時仍然會發生。

還有其他提高優先級的方法嗎?或者不編寫內核驅動程序就不可能嗎?

如果將進程(非線程)優先級設置為“實時”,則其線程應始終在其他非實時進程的線程之前運行。 所以我認為這是您可以做的最好的事情。

但是,僅在絕對必要時才應使用“實時”進程優先級,因為它可能導致整個系統無響應。

增加服務設備的線程的優先級,或者增加(如果可能)與設備通信的緩沖區大小。

Windows內任務切換的最短時間為10ms。 如果您的線程不能按時處理設備中的數據,則會出現斷斷續續的聲音。

您可能要考慮使用.net 4.0的並行編程功能。 創建任務工廠並通過多個並行線程完成工作時,分配的cpu%將更高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM