C++のマルチスレッド関数CreateThreadの使い方を教えてください。
Windows API が提供する CreateThread() 関数を使用すると、C++ で新しいスレッドを作成できます。
- Windows.h ヘッダーファイルをインクルードする。
#include <Windows.h>
- 新規スレッドで実行されるスレッド関数を定義する
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
// 线程执行的代码逻辑
return 0;
}
- CreateThread()関数を呼び出して新しいスレッドを作成します。
HANDLE hThread;
DWORD dwThreadId;
hThread = CreateThread(NULL, 0, ThreadFunc, lpParam, 0, &dwThreadId);
そのパラメーターの意味はこうです。
- 第1引数はスレッドのセキュリティ属性です。通常のNULL設定します。
- 2番目の引数はスレッドのスタックサイズで、通常は 0 と設定し、デフォルトのスタックサイズを使用します。
- 3番目の引数は、スレッド関数のアドレス(つまり、1つ前の手順で定義したThreadFunc)です。
- 第4番目の引数は、スレッド関数へ渡す引数であり、NULLであってもよい。
- 第五パラメータはスレッド作成のフラグであり、通常は0になります。
- 6番目のパラメーターはスレッドIDの格納に使用され、このIDを使用してスレッドを識別することができます。
- スレッドの作成が成功したかどうかを確認します。
if (hThread == NULL) {
// 线程创建失败,处理错误
}
- スレッドハンドルを閉じます。
CloseHandle(hThread);
スレッドを利用し終えた後は、CloseHandle() 関数でスレッドハンドルを閉じます。
CreateThread() 関数で作成するスレッドは、ユーザ空間で動作するスレッドであり、オペレーティングシステムのカーネルスレッドでは無いため、注意が必要です。カーネルスレッドを作成する必要がある場合は、_CreateThread() などの別の関数を使用できます。