C++のマルチスレッド関数CreateThreadの使い方を教えてください。

Windows API が提供する CreateThread() 関数を使用すると、C++ で新しいスレッドを作成できます。

  1. Windows.h ヘッダーファイルをインクルードする。
#include <Windows.h>
  1. 新規スレッドで実行されるスレッド関数を定義する
DWORD WINAPI ThreadFunc(LPVOID lpParam) {
    // 线程执行的代码逻辑
    return 0;
}
  1. CreateThread()関数を呼び出して新しいスレッドを作成します。
HANDLE hThread;
DWORD dwThreadId;
hThread = CreateThread(NULL, 0, ThreadFunc, lpParam, 0, &dwThreadId);

そのパラメーターの意味はこうです。

  1. 第1引数はスレッドのセキュリティ属性です。通常のNULL設定します。
  2. 2番目の引数はスレッドのスタックサイズで、通常は 0 と設定し、デフォルトのスタックサイズを使用します。
  3. 3番目の引数は、スレッド関数のアドレス(つまり、1つ前の手順で定義したThreadFunc)です。
  4. 第4番目の引数は、スレッド関数へ渡す引数であり、NULLであってもよい。
  5. 第五パラメータはスレッド作成のフラグであり、通常は0になります。
  6. 6番目のパラメーターはスレッドIDの格納に使用され、このIDを使用してスレッドを識別することができます。
  1. スレッドの作成が成功したかどうかを確認します。
if (hThread == NULL) {
    // 线程创建失败,处理错误
}
  1. スレッドハンドルを閉じます。
CloseHandle(hThread);

スレッドを利用し終えた後は、CloseHandle() 関数でスレッドハンドルを閉じます。

CreateThread() 関数で作成するスレッドは、ユーザ空間で動作するスレッドであり、オペレーティングシステムのカーネルスレッドでは無いため、注意が必要です。カーネルスレッドを作成する必要がある場合は、_CreateThread() などの別の関数を使用できます。

bannerAds