TI AM335x: Acquire QMutex lock with multiple threads

在 AM335x 平台中,我們設定了 scheduling policy 為 SCHED_FIFO,當有三個同 priority 的 thread 頻繁地搶一個 QMutex 的時候,會發生總是有一個 thread 一直搶不到的情況。

以下試了幾個方案,都沒改變什麼:

  1. Scheduling policy 改為 SCHED_RR
  2. 改用 pthread_mutex_t (Qt 內部其實也是使用它)
後來在維持 SCHED_RR 的情況下,在每次取得 QMutex 並離開後,呼叫 sched_yield(),讓目前的 calling thread 放到 thread queue 的最後面,上述問題就不再發生了。

留言

熱門文章