次の方法で共有


タイマークラス

timer メッセージング ブロックは単一のターゲットを持つ source_block であり、指定された時間の経過後か、特定の間隔で、メッセージをターゲットに送信することができます。

構文

template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;

パラメーター

T
このブロックの出力メッセージのペイロードの種類。

メンバー

パブリック コンストラクター

名前 説明
タイマー 過負荷です。 指定された期間の後に特定のメッセージを起動する timer メッセージング ブロックを構築します。
~timer デストラクター timer メッセージング ブロックを破棄します。

パブリック メソッド

名前 説明
pause timer メッセージング ブロックを停止します。 反復的な timer メッセージング ブロックの場合は、後続の start() 呼び出しで再起動できます。 非繰り返しタイマーの場合、stop 呼び出しと同じ効果があります。
start timer メッセージング ブロックを開始します。 これが呼び出されてから指定されたミリ秒数が経過すると、指定された値は message として下流に反映されます。
停止 timer メッセージング ブロックを停止します。

保護メソッド

名前 説明
accept_message(受付メッセージ) この timer メッセージング ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。
consume_message(メッセージを消費する) timer によって以前に提供され、ターゲットによって予約されたメッセージを消費し、所有権を呼び出し元に譲渡します。
リンクターゲット通知 この timer メッセージング ブロックに新しいターゲットがリンクされたことを通知するコールバック。
すべてのターゲットに伝播 timer ブロックによって生成されたメッセージを、リンクされたすべてのターゲットに提供しようとします。
release_message 以前のメッセージの予約を解除します。 (source_block::release_message をオーバーライドします。)
reserve_message この timer メッセージング ブロックから以前に提供されたメッセージを予約します。 (source_block::reserve_message をオーバーライドします。)
resume_propagation 予約が解除された後、伝達を再開します。 (source_block::resume_propagation をオーバーライドします。)

解説

詳細については、「非同期メッセージ ブロック」を参照してください。

継承階層

ISource

source_block

timer

要件

ヘッダー: agents.h

名前空間: concurrency

メッセージ受信

この timer メッセージング ブロックから提供されたメッセージを受け入れ、所有権を呼び出し元に譲渡します。

virtual message<T>* accept_message(runtime_object_identity _MsgId);

パラメーター

_MsgId
提供された runtime_object_identity オブジェクトの message

戻り値

現在呼び出し元が所有権を持っている message オブジェクトへのポインター。

メッセージを処理する

timer によって以前に提供され、ターゲットによって予約されたメッセージを消費し、所有権を呼び出し元に譲渡します。

virtual message<T>* consume_message(runtime_object_identity _MsgId);

パラメーター

_MsgId
消費される runtime_object_identity オブジェクトの message

戻り値

現在呼び出し元が所有権を持っている message オブジェクトへのポインター。

解説

accept に似ていますが、常に reserve の呼び出しが先に行われます。

この timer メッセージング ブロックに新しいターゲットがリンクされたことを通知するコールバック。

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

パラメーター

_PTarget
新しくリンクされたターゲットへのポインター。

一時停止

timer メッセージング ブロックを停止します。 反復的な timer メッセージング ブロックの場合は、後続の start() 呼び出しで再起動できます。 非繰り返しタイマーの場合、stop 呼び出しと同じ効果があります。

void pause();

すべてのターゲットに伝播する

timer ブロックによって生成されたメッセージを、リンクされたすべてのターゲットに提供しようとします。

virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);

リリースメッセージ

以前のメッセージの予約を解除します。

virtual void release_message(runtime_object_identity _MsgId);

パラメーター

_MsgId
解放する runtime_object_identity オブジェクトの message

予約メッセージ

この timer メッセージング ブロックから以前に提供されたメッセージを予約します。

virtual bool reserve_message(runtime_object_identity _MsgId);

パラメーター

_MsgId
予約されるruntime_object_identityオブジェクトのmessage

戻り値

メッセージが正常に予約された場合は true、それ以外の場合は false

解説

reserve が呼び出された後、true が返された場合は、consume または release を呼び出して、メッセージの所有権を取得または解放する必要があります。

プロパゲーション再開 (resume_propagation)

予約が解除された後、伝達を再開します。

virtual void resume_propagation();

開始

timer メッセージング ブロックを開始します。 これが呼び出されてから指定されたミリ秒数が経過すると、指定された値は message として下流に反映されます。

void start();

停止

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();

関連項目

コンカレンシー名前空間