C++のcreatethread関数の使い方は?
C++におけるcreateThread関数は、新しいスレッドを作成するための関数です。
- まず、プログラムにWindows.hヘッダーファイルをインクルードします。
#include <Windows.h>
- DWORD WINAPI型の引数としてLPVOID型の1つのパラメータを受け取り、DWORD型の値を返却する関数を作成する。例えば:
DWORD WINAPI myThreadFunction(LPVOID lpParam) {
// 线程的具体执行代码
return 0;
}
- CreateThread 関数を使用して新しいスレッドを作成します。この関数のプロトタイプは以下のとおりです。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
引数の説明:
- スレッド属性:スレッドセーフティ属性、デフォルトは NULL です。
- nativelyStackサイズ:スレッドスタックサイズ、デフォルトで0です。
- lpStartAddress:スレッドのエントリーポイント関数へのポインタ(つまり、前の手順で作成した関数)
- スレッドエントリポイント関数に渡されるパラメータ。
- nCreationFlags:スレッド作成フラグ、よく使われるものはCREATE_SUSPENDED(スレッドを中断)と0(スレッドをすぐに実行)。
- lpThreadId:受信スレッド識別子へのポインタ
- CreateThread 関数から NULL が返された場合は、スレッドの作成に失敗しています。この場合の処理を記述します。
if (hThread == NULL) {
// 处理创建线程失败的情况
return 1;
}
- CloseHandle 関数を使ってスレッドハンドルを閉じます。
CloseHandle(hThread);
これによって新しいスレッドが作成され、指定された関数が新しいスレッド内で実行されます。