|
tinykernel
|
メッセージ駆動型タスク (アクター) の基底クラス [詳解]
#include <actor.hpp>
公開メンバ関数 | |
| Actor ()=default | |
| virtual | ~Actor () |
| bool | start (uint32_t prio=PRIO_NORMAL) |
| Actor をタスクとして生成し、EventHub へ自動登録します | |
| bool | post (const MsgType &msg) |
| この Actor のメッセージキューへ直接メッセージを送信します (コピー渡し) | |
| bool | post (MsgType &&msg) |
| この Actor のメッセージキューへ直接メッセージを送信します (ムーブ渡し) | |
| template<typename U = MsgType> | |
| std::enable_if< std::is_same< U, Message >::value, bool >::type | post (uint32_t id, uintptr_t arg=0) |
| tk::Message 型の場合のコンビニエンス送信関数 | |
| TaskHandle | handle () const |
限定公開メンバ関数 | |
| virtual void | on_start () |
| タスク起動時、イベントループ突入直前に1度だけ呼ばれる初期化関数 | |
| virtual void | on_message (const MsgType &msg)=0 |
| メッセージ受信時に呼ばれるハンドラ関数 | |
メッセージ駆動型タスク (アクター) の基底クラス
固定長リングバッファ付きのメッセージキューを持ち、メッセージ到着時に自動起床して on_message() を実行します。メッセージが無い時は CPU を消費せずブロック待機します。
| MsgType | 受信するメッセージの型 (デフォルト: tk::Message) |
| QueueSize | メッセージキューの最大保持件数 (デフォルト: 8) |
|
default |
|
inlinevirtual |
|
inline |
この Actor のタスクハンドルを取得
|
protectedpure virtual |
メッセージ受信時に呼ばれるハンドラ関数
キューから取り出されたメッセージの実体への参照が渡されます。 派生クラスで必ず実装します。
| msg | 受信したメッセージ |
|
inlineprotectedvirtual |
タスク起動時、イベントループ突入直前に1度だけ呼ばれる初期化関数
タスクコンテキスト内で実行されるため、tk::sleep_ms() を使った初期化ウェイトも安全に行えます。 必要に応じて派生クラスでオーバーライドします。
|
inline |
この Actor のメッセージキューへ直接メッセージを送信します (コピー渡し)
スレッドセーフ・割り込みセーフ・マルチコアセーフです。
| msg | 送信するメッセージ |
|
inline |
|
inline |
Actor をタスクとして生成し、EventHub へ自動登録します
tk::start() を呼び出す前に登録する必要があります。
| prio | タスク優先度 (省略時: tk::PRIO_NORMAL) |