2016-12-13 12 views
0

私は複数のスレッドを実行している擬似RTシステムを持っています。私は各スレッドを特定の頻度(期間間隔)で実行したい。私はusleep(time_until_reschedule)を使用しています。問題は、time_until_rescheduleを計算することができ、次に高い優先順位のスレッドがこのスレッドを先取りする可能性があることです。このような動作を避けたいと思います。マルチスレッド環境(embedded Linux)のembedded_linuxでのsleep_until

"sleep_until"のような機能を実装したいと思います。スレッドがsigwait()を呼び出している間に各スレッドに通知するために、SIGEV_THREAD_IDのhrtimers(カーネルに組み込まれています)を使用することを考えています。

これは一種のsleep_until()を実装する実用的な方法ですか、それともLinuxではより良い方法ですか?

答えて

0

スレッドで何をする必要があるのか​​はっきりしませんが、clock_nanosleepEarliest Deadline First schedulingの組み合わせを使用できます。スリープ時間を計算せずにスリープ状態にすることができます。また、他のスレッドがCPUスレッドであるためにスレッドがスリープ状態にならないことを恐れている場合は、EDFが解決策になる可能性があります。

clock_nanosleepチェックではthis postです。 EDFスケジューラの場合は、articleにチェックを入れます。

+0

ありがとうございます、これは私の問題の良い解決策に見えます!私はclock_nanosleepまたはEDFについては知らなかった、ありがとう! – Jary316

関連する問題