Solution46
CThread.h
[詳解]
1 //=============================================================================
2 /// @file
3 /// スレッドクラスヘッダファイル
4 ///
5 /// スレッドクラスヘッダファイルです。
6 ///
7 /// $Id: CThread.h 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 once
14 #pragma managed( push, off )
15 
16 //=============================================================================
17 // インクルードファイル
18 #include <CSync.h>
19 
20 //=============================================================================
21 // 共通ライブラリ名前空間
22 namespace LibCommon {
23  //=========================================================================
24  /// スレッドクラス
25  ///
26  /// スレッドクラスです。
27  ///
28  /// @attention なし
29  ///
30  class LIB_COMMON_API CThread: public CSync {
31  //=====================================================================
32  // 構築子と解体子
33  public:
34  //---------------------------------------------------------------------
35  /// コンストラクタ
36  ///
37  /// コンストラクタです。
38  ///
39  /// @param なし
40  /// @return なし
41  /// @attention なし
42  ///
43  explicit CThread() noexcept;
44 
45  //---------------------------------------------------------------------
46  /// デストラクタ
47  ///
48  /// デストラクタです。
49  ///
50  /// @param なし
51  /// @return なし
52  /// @attention なし
53  ///
54  virtual ~CThread() noexcept;
55 
56  //=====================================================================
57  // インライン公開関数
58  public:
59  //---------------------------------------------------------------------
60  /// スレッドID取得関数
61  ///
62  /// スレッドID取得関数です。
63  ///
64  /// @param なし
65  /// @return スレッドID
66  /// @attention なし
67  ///
68  inline virtual DWORD GetThreadId() const noexcept { return m_dwThreadId; }
69 
70  //=====================================================================
71  // 公開関数
72  public:
73  //---------------------------------------------------------------------
74  /// クローズ関数
75  ///
76  /// クローズ関数です。
77  ///
78  /// @param なし
79  /// @return なし
80  /// @attention オーバライド関数です。
81  ///
82  virtual void Close() noexcept override;
83 
84  //---------------------------------------------------------------------
85  /// リリース関数
86  ///
87  /// リリース関数です。
88  ///
89  /// @param なし
90  /// @return 実行結果
91  /// - true 成功
92  /// - false 失敗
93  /// @attention オーバライド関数です。
94  ///
95  virtual bool Release() noexcept override;
96 
97  //---------------------------------------------------------------------
98  /// 作成関数
99  ///
100  /// 作成関数です。
101  ///
102  /// @param[in] pfnFunc 関数アドレス
103  /// @param[in] lpParam 引数アドレス
104  /// @return 実行結果
105  /// - true 成功
106  /// - false 失敗
107  /// @attention なし
108  ///
109  virtual bool Create( LPTHREAD_START_ROUTINE pfnFunc, LPVOID lpParam ) noexcept;
110 
111  //---------------------------------------------------------------------
112  /// オープン関数
113  ///
114  /// オープン関数です。
115  ///
116  /// @param[in] dwThreadId スレッドID
117  /// @param[in] dwAccess アクセスフラグ
118  /// @return 実行結果
119  /// - true 成功
120  /// - false 失敗
121  /// @attention なし
122  ///
123  virtual bool Open( DWORD dwThreadId, DWORD dwAccess = THREAD_ALL_ACCESS ) noexcept;
124 
125  //---------------------------------------------------------------------
126  /// 強制終了関数
127  ///
128  /// 強制終了関数です。
129  ///
130  /// @param[in] dwExitCode 終了コード
131  /// @return 実行結果
132  /// - true 成功
133  /// - false 失敗
134  /// @attention なし
135  ///
136  virtual bool Terminate( DWORD dwExitCode = 0 ) noexcept;
137 
138  //---------------------------------------------------------------------
139  /// 終了コード取得関数
140  ///
141  /// 終了コード取得関数です。
142  ///
143  /// @param なし
144  /// @return スレッド終了コード
145  /// @attention なし
146  ///
147  virtual DWORD GetExitCode() const noexcept;
148 
149  //---------------------------------------------------------------------
150  /// サスペンド関数
151  ///
152  /// サスペンド関数です。
153  ///
154  /// @param なし
155  /// @return 実行結果
156  /// - true 成功
157  /// - false 失敗
158  /// @attention なし
159  ///
160  virtual bool Suspend() noexcept;
161 
162  //---------------------------------------------------------------------
163  /// リジューム関数
164  ///
165  /// リジューム関数です。
166  ///
167  /// @param なし
168  /// @return 実行結果
169  /// - true 成功
170  /// - false 失敗
171  /// @attention なし
172  ///
173  virtual bool Resume() noexcept;
174 
175  //=====================================================================
176  // 限定公開変数
177  protected:
178  DWORD m_dwThreadId; ///< スレッドID
179 
180  //=====================================================================
181  // 削除関数
182  private:
183  CThread( CThread const& ) = delete;
184  CThread& operator=( CThread const& ) = delete;
185  };
186 }
187 
188 #pragma managed( pop )
同期クラスヘッダファイル
同期クラス
Definition: CSync.h:30
共通ライブラリ名前空間
Definition: CArray.h:23
スレッドクラス
Definition: CThread.h:30
virtual DWORD GetThreadId() const noexcept
スレッドID取得関数
Definition: CThread.h:68
#define LIB_COMMON_API
ダイナミックライブラリインポート宣言
Definition: LibCommonDef.h:44
DWORD m_dwThreadId
スレッドID
Definition: CThread.h:178