Solution46
CSync.cpp
[詳解]
1 //=============================================================================
2 /// @file
3 /// 同期クラス実装ファイル
4 ///
5 /// 同期クラス実装ファイルです。
6 ///
7 /// $Id: CSync.cpp 245 2019-03-20 15:03:41Z admin $
8 /// $Date: 2019-03-21 00:03:41 +0900 (2019/03/21 (木)) $
9 /// $Author: admin $
10 ///
11 /// @attention なし
12 
13 #pragma managed( push, off )
14 
15 //=============================================================================
16 // インクルードファイル
17 #include <CSync.h>
18 
19 //=============================================================================
20 // 共通ライブラリ名前空間
21 namespace LibCommon {
22  //=========================================================================
23  // 同期クラス
24  //=========================================================================
25  // 構築子と解体子
26  //-------------------------------------------------------------------------
27  // コンストラクタ
28  CSync::CSync() noexcept
29  // メンバ変数初期化
30  : m_hObject( nullptr )
31  , m_bIsCreate( false )
32  {}
33 
34  //-------------------------------------------------------------------------
35  // デストラクタ
36  CSync::~CSync() noexcept {
37  // クローズする
38  Close();
39  }
40 
41  //=========================================================================
42  // 公開関数
43  //-------------------------------------------------------------------------
44  // クローズ関数
45  void CSync::Close() noexcept {
46  // オブジェクトハンドルを調べる
47  if ( nullptr != m_hObject ) {
48  // オブジェクトハンドルをクローズする
49  ::CloseHandle( m_hObject );
50  }
51 
52  // メンバ変数をクリアする
53  m_hObject = nullptr;
54  m_bIsCreate = false;
55  }
56 
57  //-------------------------------------------------------------------------
58  // ウェイト関数
59  bool CSync::Wait( DWORD dwTime ) noexcept {
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  }
76 
77  //-------------------------------------------------------------------------
78  // ロック関数
79  bool CSync::Lock( DWORD dwTime ) noexcept {
80  // ウェイトする
81  return Wait( dwTime );
82  }
83 
84  //-------------------------------------------------------------------------
85  // ロック解除関数
86  bool CSync::Unlock() noexcept {
87  // リリースする
88  return Release();
89  }
90 }
91 
92 #pragma managed( pop )
virtual void Close() noexcept
クローズ関数
Definition: CSync.cpp:45
同期クラスヘッダファイル
virtual bool Unlock() noexcept
ロック解除関数
Definition: CSync.cpp:86
bool m_bIsCreate
新規作成フラグ
Definition: CSync.h:153
virtual bool Wait(DWORD dwTime=INFINITE) noexcept
ウェイト関数
Definition: CSync.cpp:59
共通ライブラリ名前空間
Definition: CArray.h:23
virtual bool Lock(DWORD dwTime=INFINITE) noexcept
ロック関数
Definition: CSync.cpp:79
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
virtual bool Release() noexcept=0
リリース関数
CSync() noexcept
コンストラクタ
Definition: CSync.cpp:28
virtual ~CSync() noexcept
デストラクタ
Definition: CSync.cpp:36