メインコンテンツまでスキップ
Knowledgebase
Home
Renesas Electronics Japan - Knowledgebase

イベントフラグの使用に関するFAQ

最終更新日:2017/07/05

質問1.イベントフラグとは何ですか?

回答
イベントフラグは、スレッドを同期させるための強力なツールです。各イベントフラグは、1ビットで表されます。
イベントフラグは、32のグループに編成されます。

質問2.イベントフラグの仕組みは?

回答
スレッドは、グループ内の32個のイベントフラグすべてに対して同時に操作可能です。イベントは、tx_event_flags_setでセットされ、tx_event_flags_getで取得します。

イベントフラグは、現在のイベントフラグと新しいイベントフラグの間で、AND/ORによる論理演算を行ってセットします。
論理演算の種類(ANDまたはOR)は、tx_event_flags_setコールで指定されます。
イベントフラグの取得についても同様の論理オプションがあります。取得リクエストは、指定したイベントフラグをすべて要求するよう指定することができます(論理積)。
また、取得リクエストは、指定した任意のイベントフラグがリクエストを満たすように指定することができます(論理和)。
イベントフラグの取得に使用される論理演算の種類は、tx_event_flags_getコールで指定されます。

質問3.イベントフラグはどのように生成されるのでしょうか?

回答
イベントフラグのグループは、初期化中またはアプリケーションスレッドのランタイム中に生成されます。
生成時、グループ内のすべてのイベントフラグはゼロに設定されます。1つのアプリケーション内のイベントフラグのグループ数に制限はありません。

質問4.スレッドが複数のイベントフラグの取得をリクエストするとどうなりますか?

回答
アプリケーションスレッドは、あるグループからイベントフラグの任意の論理結合を取得しようと試みているときは中断できます。
イベントフラグがセットされると、中断した全スレッドの取得リクエストがレビューされ、要求されたイベントフラグを有するスレッドをすべて再開します。

1つのイベントフラググループで中断されたスレッドはすべて、イベントフラグをセットしたときにレビューされます。
その結果、当然ながらオーバヘッドが発生します。このため、同じイベントフラググループを使用して、スレッド数を妥当な数に制限することをお奨めします。

質問5.通知は、イベントフラグを使ってどのように使用できるのでしょうか?

回答
イベントフラグがセットされると同時に通知を行うと便利なアプリケーションがあります。
ThreadXでは、tx_event_flags_set_notify処理によって、実行可能です。この処理を行うと、提供されたアプリケーション通知関数が、指定したイベントフラググループに登録されます。
ThreadXは、その後、当該グループのイベントフラグがセットされると、直ちにこのアプリケーション通知関数を呼び出します。
アプリケーション通知関数の厳密な処理は、アプリケーションによって決まりますが、一般的には、新しいイベントフラグの処理に適したスレッドの再開で構成されます。

質問6.さらに詳しい情報はどこにありますか?

回答
さらに詳しい情報は、ThreadXユーザマニュアルをご参照ください。

©1997-2016 Express Logic, Inc. All rights reserved.本文書と関連するThreadXソフトウェアは、Express Logic, Inc.の独占所有物です。各々にExpress Logic, Inc.の専有情報が含まれています。

 

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア