次の方法で共有


timer クラス

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 をオーバーライドします。)

解説

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

継承階層

ISource

source_block

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 の呼び出しが先に行われます。

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

関連項目

コンカレンシー名前空間