Solution46
LibCommon::CThread クラス

スレッドクラス [詳解]

#include "CThread.h"

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

公開メンバ関数

 CThread () noexcept
 コンストラクタ [詳解]
 
virtual ~CThread () noexcept
 デストラクタ [詳解]
 
virtual DWORD GetThreadId () const noexcept
 スレッドID取得関数 [詳解]
 
virtual void Close () noexcept override
 クローズ関数 [詳解]
 
virtual bool Release () noexcept override
 リリース関数 [詳解]
 
virtual bool Create (LPTHREAD_START_ROUTINE pfnFunc, LPVOID lpParam) noexcept
 作成関数 [詳解]
 
virtual bool Open (DWORD dwThreadId, DWORD dwAccess=THREAD_ALL_ACCESS) noexcept
 オープン関数 [詳解]
 
virtual bool Terminate (DWORD dwExitCode=0) noexcept
 強制終了関数 [詳解]
 
virtual DWORD GetExitCode () const noexcept
 終了コード取得関数 [詳解]
 
virtual bool Suspend () noexcept
 サスペンド関数 [詳解]
 
virtual bool Resume () noexcept
 リジューム関数 [詳解]
 
- 基底クラス LibCommon::CSync に属する継承公開メンバ関数
 CSync () noexcept
 コンストラクタ [詳解]
 
virtual ~CSync () noexcept
 デストラクタ [詳解]
 
virtual HANDLE GetHandle () const noexcept
 オブジェクトハンドル取得関数 [詳解]
 
virtual bool IsCreate () const noexcept
 新規作成状態取得関数 [詳解]
 
virtual bool Wait (DWORD dwTime=INFINITE) noexcept
 ウェイト関数 [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) noexcept
 ロック関数 [詳解]
 
virtual bool Unlock () noexcept
 ロック解除関数 [詳解]
 

限定公開変数類

DWORD m_dwThreadId
 スレッドID [詳解]
 
- 基底クラス LibCommon::CSync に属する継承限定公開変数類
HANDLE m_hObject
 オブジェクトハンドル [詳解]
 
bool m_bIsCreate
 新規作成フラグ [詳解]
 

非公開メンバ関数

 CThread (CThread const &)=delete
 
CThreadoperator= (CThread const &)=delete
 

詳解

スレッドクラス

スレッドクラスです。

注意
なし

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

構築子と解体子

LibCommon::CThread::CThread ( )
explicitnoexcept

コンストラクタ

コンストラクタです。

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

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

30  : CSync()
31  // メンバ変数初期化
32  , m_dwThreadId( 0 )
33  {}
CSync() noexcept
コンストラクタ
Definition: CSync.cpp:28
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178
LibCommon::CThread::~CThread ( )
virtualnoexcept

デストラクタ

デストラクタです。

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

CThread.cpp37 行目に定義があります。

参照先 Close().

37  {
38  // クローズする
39  Close();
40  }
virtual void Close() noexcept override
クローズ関数
Definition: CThread.cpp:46

呼び出し関係図:

LibCommon::CThread::CThread ( CThread const &  )
privatedelete

関数詳解

virtual DWORD LibCommon::CThread::GetThreadId ( ) const
inlinevirtualnoexcept

スレッドID取得関数

スレッドID取得関数です。

引数
なし
戻り値
スレッドID
注意
なし

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

参照元 Create().

68 { return m_dwThreadId; }
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178

被呼び出し関係図:

void LibCommon::CThread::Close ( )
overridevirtualnoexcept

クローズ関数

クローズ関数です。

引数
なし
戻り値
なし
注意
オーバライド関数です。

LibCommon::CSyncを再実装しています。

CThread.cpp46 行目に定義があります。

参照先 LibCommon::CSync::Close(), m_dwThreadId.

参照元 Create(), Open(), LibCommon::CConsole::~CConsole(), ~CThread().

46  {
47  // 基底クラスの関数を実行する
48  CSync::Close();
49 
50  // メンバ変数を初期化する
51  m_dwThreadId = 0;
52  }
virtual void Close() noexcept
クローズ関数
Definition: CSync.cpp:45
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CThread::Release ( )
overridevirtualnoexcept

リリース関数

リリース関数です。

引数
なし
戻り値
実行結果
  • true 成功
  • false 失敗
注意
オーバライド関数です。

LibCommon::CSyncを実装しています。

CThread.cpp56 行目に定義があります。

参照先 Terminate().

56  {
57  // 強制終了する
58  return Terminate();
59  }
virtual bool Terminate(DWORD dwExitCode=0) noexcept
強制終了関数
Definition: CThread.cpp:128

呼び出し関係図:

bool LibCommon::CThread::Create ( LPTHREAD_START_ROUTINE  pfnFunc,
LPVOID  lpParam 
)
virtualnoexcept

作成関数

作成関数です。

引数
[in]pfnFunc関数アドレス
[in]lpParam引数アドレス
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CThread.cpp63 行目に定義があります。

参照先 Close(), GetThreadId(), m_dwThreadId, LibCommon::CSync::m_hObject.

参照元 LibCommon::CConsoleMenu::StartMenu().

63  {
64  // 処理ブロック
65  bool result = false;
66  do {
67  // 関数アドレスを調べる
68  if ( nullptr == pfnFunc ) {
69  // 失敗!
70  break;
71  }
72  // スレッドハンドルを調べる
73  else if ( nullptr != m_hObject ) {
74  // クローズする
75  Close();
76  }
77 
78  // スレッドを作成する
79  m_hObject = ::CreateThread( nullptr, 0, pfnFunc, lpParam, 0, nullptr );
80  if ( nullptr == m_hObject ) {
81  // 失敗!
82  break;
83  }
84 
85  // スレッドIDを取得する
87 
88  // 成功!
89  result = true;
90  } while ( false );
91 
92  // 実行結果を返す
93  return result;
94  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
virtual void Close() noexcept override
クローズ関数
Definition: CThread.cpp:46
virtual DWORD GetThreadId() const noexcept
スレッドID取得関数
Definition: CThread.h:68
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178

呼び出し関係図:

被呼び出し関係図:

bool LibCommon::CThread::Open ( DWORD  dwThreadId,
DWORD  dwAccess = THREAD_ALL_ACCESS 
)
virtualnoexcept

オープン関数

オープン関数です。

引数
[in]dwThreadIdスレッドID
[in]dwAccessアクセスフラグ
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CThread.cpp98 行目に定義があります。

参照先 Close(), m_dwThreadId, LibCommon::CSync::m_hObject.

98  {
99  // 処理ブロック
100  bool result = false;
101  do {
102  // スレッドハンドルを調べる
103  if ( nullptr != m_hObject ) {
104  // クローズする
105  Close();
106  }
107 
108  // スレッドをオープンする
109  m_hObject = ::OpenThread( dwAccess, false, dwThreadId );
110  if ( nullptr == m_hObject ) {
111  // 失敗!
112  break;
113  }
114 
115  // スレッドIDを設定する
116  m_dwThreadId = dwThreadId;
117 
118  // 成功!
119  result = true;
120  } while ( false );
121 
122  // 実行結果を返す
123  return result;
124  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
virtual void Close() noexcept override
クローズ関数
Definition: CThread.cpp:46
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178

呼び出し関係図:

bool LibCommon::CThread::Terminate ( DWORD  dwExitCode = 0)
virtualnoexcept

強制終了関数

強制終了関数です。

引数
[in]dwExitCode終了コード
戻り値
実行結果
  • true 成功
  • false 失敗
注意
なし

CThread.cpp128 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

参照元 Release().

128  {
129  // 処理ブロック
130  bool result = false;
131  do {
132  // スレッドを強制終了する
133  if ( 0 == ::TerminateThread( m_hObject, dwExitCode ) ) {
134  // 失敗!
135  break;
136  }
137 
138  // 成功!
139  result = true;
140  } while ( false );
141 
142  // 実行結果を返す
143  return result;
144  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152

被呼び出し関係図:

DWORD LibCommon::CThread::GetExitCode ( ) const
virtualnoexcept

終了コード取得関数

終了コード取得関数です。

引数
なし
戻り値
スレッド終了コード
注意
なし

CThread.cpp148 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

148  {
149  // 処理ブロック
150  DWORD result = 0;
151  do {
152  // スレッド終了コードを取得する
153  DWORD dwExitCode;
154  if ( 0 == ::GetExitCodeThread( m_hObject, &dwExitCode ) ) {
155  // 失敗!
156  break;
157  }
158 
159  // 成功!
160  result = dwExitCode;
161  } while ( false );
162 
163  // 実行結果を返す
164  return result;
165  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
bool LibCommon::CThread::Suspend ( )
virtualnoexcept

サスペンド関数

サスペンド関数です。

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

CThread.cpp169 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

169  {
170  // 処理ブロック
171  bool result = false;
172  do {
173  // スレッドをサスペンドする
174  if ( static_cast< DWORD >( -1 ) == ::SuspendThread( m_hObject ) ) {
175  // 失敗!
176  break;
177  }
178 
179  // 成功!
180  result = true;
181  } while ( false );
182 
183  // 実行結果を返す
184  return result;
185  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
bool LibCommon::CThread::Resume ( )
virtualnoexcept

リジューム関数

リジューム関数です。

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

CThread.cpp189 行目に定義があります。

参照先 LibCommon::CSync::m_hObject.

189  {
190  // 処理ブロック
191  bool result = false;
192  do {
193  // スレッドをリジュームする
194  if ( static_cast< DWORD >( -1 ) == ::ResumeThread( m_hObject ) ) {
195  // 失敗!
196  break;
197  }
198 
199  // 成功!
200  result = true;
201  } while ( false );
202 
203  // 実行結果を返す
204  return result;
205  }
HANDLE m_hObject
オブジェクトハンドル
Definition: CSync.h:152
CThread& LibCommon::CThread::operator= ( CThread const &  )
privatedelete

メンバ詳解

DWORD LibCommon::CThread::m_dwThreadId
protected

スレッドID

CThread.h178 行目に定義があります。

参照元 Close(), Create(), Open().


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