GaitGeneration by Graph Search
|
非同期処理を行う際に,データの更新回数とデータをまとめて扱うためのクラス. [詳解]
#include <asyncable_data.h>
公開メンバ関数 | |
AsyncableData () | |
AsyncableData (const T &data) | |
AsyncableData (const AsyncableData &)=delete | |
コピーは禁止 | |
AsyncableData & | operator= (const AsyncableData &)=delete |
コピー代入は禁止 | |
AsyncableData (AsyncableData &&)=delete | |
ムーブは禁止 | |
T | GetData () const |
値をコピーして返す. この時,read lockをかける. 当然,データの更新回数はインクリメントされない. | |
void | SetData (const T &data) |
値を変更する. この時,write lockをかける. データの更新回数をインクリメントする. | |
int | GetUpdateCount () const |
データの更新回数を返す. この時,read lockをかける. この値を調べて,データの更新回数が変わっているかを確認することで, データの更新が必要かを確認する. | |
非同期処理を行う際に,データの更新回数とデータをまとめて扱うためのクラス.
この構造体は,データの更新回数とデータをまとめて扱うためのクラス. 値の変更を行う際に,データの更新回数をインクリメント(++のこと)することで, データの更新回数をカウントする.
また,値の参照と変更を行う際にミューテックスを用いて, 同時に変更されることを防ぐ.ミューテックスについては以下を参照.
[非同期処理について]
非同期処理 (並列・同時に処理を行うこと) を行う際に, 一つのにデータに同じタイミングで操作すると危険(未定義処理になり, 成功か失敗かが不定になる). このクラスはそれを防ぐために boost::shared_mutex を使用している. このクラス内では read lock, write lockを使っている.
[参考]
メンバのm_mtxについている mutable は, constなメンバ関数 (メンバの値を変更できないメンバ関数)においても変更できるようになるメンバ変数を表 す.通常絶対使うべきではないが,今回のような場合(boost::shared_mutexを使う場合) は有効的.
T | 非同期処理を行うデータ.代入を行うことができる型を指定すること. |
asyncable_data.h の 54 行目に定義があります。
|
inline |
asyncable_data.h の 57 行目に定義があります。
|
inlineexplicit |
asyncable_data.h の 58 行目に定義があります。
|
delete |
コピーは禁止
|
delete |
ムーブは禁止
|
inline |
値をコピーして返す.
この時,read lockをかける.
当然,データの更新回数はインクリメントされない.
asyncable_data.h の 68 行目に定義があります。
|
inline |
データの更新回数を返す.
この時,read lockをかける.
この値を調べて,データの更新回数が変わっているかを確認することで, データの更新が必要かを確認する.
asyncable_data.h の 99 行目に定義があります。
|
delete |
コピー代入は禁止
|
inline |
値を変更する.
この時,write lockをかける.
データの更新回数をインクリメントする.
[in] | data | セットする値.const参照渡しされる. |
asyncable_data.h の 80 行目に定義があります。