Solution46
LibCommon::CSync クラスabstract

同期クラス [詳解]

#include "CSync.h"

LibCommon::CSync の継承関係図
Inheritance graph
LibCommon::CSync 連携図
Collaboration graph

公開メンバ関数

 CSync () noexcept
 コンストラクタ [詳解]
 
virtual ~CSync () noexcept
 デストラクタ [詳解]
 
virtual HANDLE GetHandle () const noexcept
 オブジェクトハンドル取得関数 [詳解]
 
virtual bool IsCreate () const noexcept
 新規作成状態取得関数 [詳解]
 
virtual void Close () noexcept
 クローズ関数 [詳解]
 
virtual bool Wait (DWORD dwTime=INFINITE) noexcept
 ウェイト関数 [詳解]
 
virtual bool Release () noexcept=0
 リリース関数 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) noexcept
 ロック関数 [詳解]
 
virtual bool Unlock () noexcept
 ロック解除関数 [詳解]
 

限定公開変数類

HANDLE m_hObject
 オブジェクトハンドル [詳解]
 
bool m_bIsCreate
 新規作成フラグ [詳解]
 

非公開メンバ関数

 CSync (CSync const &)=delete
 
CSyncoperator= (CSync const &)=delete
 

詳解

同期クラス

同期クラスです。

注意
抽象クラスです。

CSync.h30 行目に定義があります。

構築子と解体子

LibCommon::CSync::CSync ( )
explicitnoexcept

コンストラクタ

コンストラクタです。

引数
なし
戻り値
なし
注意
なし

CSync.cpp28 行目に定義があります。

30  : m_hObject( nullptr )
31  , m_bIsCreate( false )
32  {}
bool m_bIsCreate
新規作成フラグ
Definition: CSync.h:153
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
LibCommon::CSync::~CSync ( )
virtualnoexcept

デストラクタ

デストラクタです。

引数
なし
戻り値
なし
注意
なし

CSync.cpp36 行目に定義があります。

参照先 Close().

36  {
37  // クローズする
38  Close();
39  }
virtual void Close() noexcept
クローズ関数
Definition: CSync.cpp:45

呼び出し関係図:

LibCommon::CSync::CSync ( CSync const &  )
privatedelete

関数詳解

virtual HANDLE LibCommon::CSync::GetHandle ( ) const
inlinevirtualnoexcept

オブジェクトハンドル取得関数

オブジェクトハンドル取得関数です。

引数
なし
戻り値
オブジェクトハンドル
注意
なし

LibCommon::CMappingで再実装されています。

CSync.h68 行目に定義があります。

参照元 LibCommon::CConsole::ClearInputBuffer().

68 { return m_hObject; }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152

被呼び出し関係図:

virtual bool LibCommon::CSync::IsCreate ( ) const
inlinevirtualnoexcept

新規作成状態取得関数

新規作成状態取得関数です。

引数
なし
戻り値
新規作成フラグ
  • true 新規作成
  • false 非新規作成
注意
なし

CSync.h81 行目に定義があります。

参照元 LibLogOut::CLibLogOut::CLibLogOut().

81 { return m_bIsCreate; }
bool m_bIsCreate
新規作成フラグ
Definition: CSync.h:153

被呼び出し関係図:

void LibCommon::CSync::Close ( )
virtualnoexcept

クローズ関数

クローズ関数です。

引数
なし
戻り値
なし
注意
なし

LibCommon::CTimer, LibCommon::CMapping, LibCommon::CProcess, LibCommon::CThread, LibCommon::CMutexで再実装されています。

CSync.cpp45 行目に定義があります。

参照先 m_bIsCreate, m_hObject.

参照元 LibCommon::CMutex::Close(), LibCommon::CProcess::Close(), LibCommon::CThread::Close(), LibCommon::CTimer::Close(), LibCommon::CSemaphore::Create(), LibCommon::CEvent::Create(), LibCommon::CEvent::Open(), LibCommon::CSemaphore::Open(), ~CSync().

45  {
46  // オブジェクトハンドルを調べる
47  if ( nullptr != m_hObject ) {
48  // オブジェクトハンドルをクローズする
49  ::CloseHandle( m_hObject );
50  }
51 
52  // メンバ変数をクリアする
53  m_hObject = nullptr;
54  m_bIsCreate = false;
55  }
bool m_bIsCreate
新規作成フラグ
Definition: CSync.h:153
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152

被呼び出し関係図:

bool LibCommon::CSync::Wait ( DWORD  dwTime = INFINITE)
virtualnoexcept

ウェイト関数

ウェイト関数です。

引数
[in]dwTimeウェイト時間
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

LibCommon::CTimerで再実装されています。

CSync.cpp59 行目に定義があります。

参照先 m_hObject.

参照元 LibCommon::CConsoleMenu::ExecMenu(), LibCommon::CConsoleMenu::ExecSubThread(), LibLogOut::CLibLogOut::Flush(), LibCommon::CConsole::InputChar(), LibCommon::CConsole::InputRecord(), LibCommon::CMutex::Lock(), Lock(), LibCommon::CConsoleMenu::StopMenu(), LibLogOut::CLibLogOut::SubThreadProc(), LibNewDel::CLibNewDel::UpdateProcessInfo(), LibLogOut::CLibLogOut::UpdateProcessInfo(), LibCommon::CTimer::Wait().

59  {
60  // 処理ブウェイト
61  bool result = false;
62  do {
63  // シグナルがセットされるまで待機する
64  if ( WAIT_OBJECT_0 != ::WaitForSingleObject( m_hObject, dwTime ) ) {
65  // 失敗!
66  break;
67  }
68 
69  // 成功!
70  result = true;
71  } while ( false );
72 
73  // 実行結果を返す
74  return result;
75  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152

被呼び出し関係図:

virtual bool LibCommon::CSync::Release ( )
pure virtualnoexcept

リリース関数

リリース関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
純粋仮想関数です。

LibCommon::CTimer, LibCommon::CProcess, LibCommon::CThread, LibCommon::CMutex, LibCommon::CEvent, LibCommon::CSemaphoreで実装されています。

参照元 Unlock().

被呼び出し関係図:

bool LibCommon::CSync::Lock ( DWORD  dwTime = INFINITE)
virtualnoexcept

ロック関数

ロック関数です。

引数
[in]dwTime待機時間
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

LibCommon::CMutexで再実装されています。

CSync.cpp79 行目に定義があります。

参照先 Wait().

79  {
80  // ウェイトする
81  return Wait( dwTime );
82  }
virtual bool Wait(DWORD dwTime=INFINITE) noexcept
ウェイト関数
Definition: CSync.cpp:59

呼び出し関係図:

bool LibCommon::CSync::Unlock ( )
virtualnoexcept

ロック解除関数

ロック解除関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

LibCommon::CMutexで再実装されています。

CSync.cpp86 行目に定義があります。

参照先 Release().

参照元 LibCommon::CSyncAuto::~CSyncAuto().

86  {
87  // リリースする
88  return Release();
89  }
virtual bool Release() noexcept=0
リリース関数

呼び出し関係図:

被呼び出し関係図:

CSync& LibCommon::CSync::operator= ( CSync const &  )
privatedelete

メンバ詳解

bool LibCommon::CSync::m_bIsCreate
protected

このクラス詳解は次のファイルから抽出されました: