timer メッセージング ブロックは単一のターゲットを持つ source_block であり、指定された時間の経過後か、特定の間隔で、メッセージをターゲットに送信することができます。
構文
template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;
パラメーター
T
このブロックの出力メッセージのペイロードの種類。
メンバー
パブリック コンストラクター
| 名前 | 説明 |
|---|---|
| タイマー | 過負荷です。 指定された期間の後に特定のメッセージを起動する timer メッセージング ブロックを構築します。 |
| ~timer Destructor | timer メッセージング ブロックを破棄します。 |
パブリック メソッド
| 名前 | 説明 |
|---|---|
| pause | timer メッセージング ブロックを停止します。 反復的な timer メッセージング ブロックの場合は、後続の start() 呼び出しで再起動できます。 非繰り返しタイマーの場合、stop 呼び出しと同じ効果があります。 |
| start | timer メッセージング ブロックを開始します。 これが呼び出されてから指定されたミリ秒数が経過すると、指定された値は message として下流に反映されます。 |
| stop | timer メッセージング ブロックを停止します。 |
保護メソッド
| 名前 | 説明 |
|---|---|
| accept_message | この timer メッセージング ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。 |
| consume_message | この timer から以前に提供され、ターゲットによって予約されているメッセージを使用し、所有権を呼び出し元に譲渡します。 |
| link_target_notification | この timer メッセージング ブロックに新しいターゲットがリンクされたことを通知するコールバック。 |
| propagate_to_any_targets | timer ブロックによって生成されたメッセージを、リンクされたすべてのターゲットに提供しようとします。 |
| release_message | 以前のメッセージの予約を解除します。 (source_block::release_message をオーバーライドします。) |
| reserve_message | この timer メッセージング ブロックから以前に提供されたメッセージを予約します。 (source_block::reserve_message をオーバーライドします。) |
| resume_propagation | 予約が解除された後、伝達を再開します。 (source_block::resume_propagation をオーバーライドします。) |
解説
詳細については、「非同期メッセージ ブロック」を参照してください。
継承階層
timer
要件
ヘッダー: agents.h
名前空間: concurrency
accept_message
この timer メッセージング ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。
virtual message<T>* accept_message(runtime_object_identity _MsgId);
パラメーター
_MsgId
提供された message オブジェクトの runtime_object_identity。
戻り値
現在呼び出し元が所有権を持っている message オブジェクトへのポインター。
consume_message
この timer から以前に提供され、ターゲットによって予約されているメッセージを使用し、所有権を呼び出し元に譲渡します。
virtual message<T>* consume_message(runtime_object_identity _MsgId);
パラメーター
_MsgId
使用されている message オブジェクトの runtime_object_identity。
戻り値
現在呼び出し元が所有権を持っている message オブジェクトへのポインター。
解説
accept に似ていますが、常に reserve の呼び出しが先に行われます。
link_target_notification
この timer メッセージング ブロックに新しいターゲットがリンクされたことを通知するコールバック。
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
パラメーター
_PTarget
新しくリンクされたターゲットへのポインター。
pause
timer メッセージング ブロックを停止します。 反復的な timer メッセージング ブロックの場合は、後続の start() 呼び出しで再起動できます。 非繰り返しタイマーの場合、stop 呼び出しと同じ効果があります。
void pause();
propagate_to_any_targets
timer ブロックによって生成されたメッセージを、リンクされたすべてのターゲットに提供しようとします。
virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);
release_message
以前のメッセージの予約を解除します。
virtual void release_message(runtime_object_identity _MsgId);
パラメーター
_MsgId
解放する message オブジェクトの runtime_object_identity。
reserve_message
この timer メッセージング ブロックから以前に提供されたメッセージを予約します。
virtual bool reserve_message(runtime_object_identity _MsgId);
パラメーター
_MsgId
予約する message オブジェクトの runtime_object_identity。
戻り値
メッセージが正常に予約された場合は true、それ以外の場合は false。
解説
reserve が呼び出された後、true が返された場合は、consume または release を呼び出して、メッセージの所有権を取得または解放する必要があります。
resume_propagation
予約が解除された後、伝達を再開します。
virtual void resume_propagation();
start
timer メッセージング ブロックを開始します。 これが呼び出されてから指定されたミリ秒数が経過すると、指定された値は message として下流に反映されます。
void start();
stop
timer メッセージング ブロックを停止します。
void stop();
タイマー
指定された期間の後に特定のメッセージを起動する timer メッセージング ブロックを構築します。
timer(
unsigned int _Ms,
T const& value,
ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
Scheduler& _Scheduler,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
ScheduleGroup& _ScheduleGroup,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
パラメーター
_Ms
指定したメッセージを下流に伝達するために呼び出しを開始してから経過する必要があるミリ秒数。
value
タイマーが経過すると下流に伝達される値。
_PTarget
タイマーがメッセージを伝達するターゲット。
_Repeating
True の場合、_Ms はタイマーがミリ秒ごとに定期的に発生します。
_Scheduler
その内部で timer のメッセージング ブロックの反映タスクがスケジュールされる Scheduler オブジェクト。
_ScheduleGroup
その内部で ScheduleGroup メッセージング ブロックの反映タスクがスケジュールされる timer オブジェクト。 使用される Scheduler オブジェクトは、スケジュール グループによって暗黙的に指定されます。
解説
_Scheduler または _ScheduleGroup パラメーターを指定しない場合、ランタイムは既定のスケジューラを使用しています。
~タイマー
timer メッセージング ブロックを破棄します。
~timer();