1
我正在linux中設計一個嵌入式QT應用程序。我的應用程序的一部分是實時音頻流,它是系統的重中之重,必須始終滿足實時最後期限。我已經將這個線程被安排爲FIFO與最高優先級:如何降低QT Gui線程優先級?
schparam.sched_priority = sched_get_priority_max(SCHED_FIFO);
pthread_setschedparam(pthread_self(),SCHED_FIFO, &schparam)
我需要我的QT GUI總是產生,讓這個實時過程有先決。所以我嘗試設置QT GUI線程priorty爲
QThread::currentThread()->setPriority(QThread::LowestPriority);
但這仍然不起作用。如果我與GUI交互太久,我的實時音頻流就是xflowing。
我需要在這裏設置其他一些優先級參數嗎?不幸的是切換到實時內核不是一種選擇。
您是否嘗試過使用sched_priority而不是QThread的優先級切換器來設置QThread :: currentThread()的優先級? – waddlesplash
是的。好的想法,它似乎應該工作,但沒有骰子。 –
你認爲GUI線程是怪罪。你確定你的音頻流線程沒有起作用嗎?你確定優先級更改成功了嗎?音頻線程如何與gui線程接口 - 你是否無意中強制優先倒置?我認爲這樣,你的問題缺乏足夠的細節。 Qt代碼是可以的。假設你檢查錯誤,pthread代碼是「OK」。 –