Windows 環境における C 言語によるマルチスレッド関数

Windows OSでは、C言語のマルチスレッド関数はWindows APIが提供する関数が利用できます。以下は一般的なWindowsのマルチスレッド関数です。

  1. CreateThread 関数 : 新しいスレッドを作成します。この関数のプロトタイプを次に示します。
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES   lpThreadAttributes,
SIZE_T                  dwStackSize,
LPTHREAD_START_ROUTINE  lpStartAddress,
LPVOID                  lpParameter,
DWORD                   dwCreationFlags,
LPDWORD                 lpThreadId
);

スレッドのセキュリティ属性の指定はlpThreadAttributesパラメータ、スレッドのスタックサイズの指定はdwStackSizeパラメータ、スレッド関数アドレスの指定はlpStartAddressパラメータ、スレッド関数へのパラメータの引き渡しはlpParameterパラメータ、スレッド作成フラグの指定はdwCreationFlagsパラメータ、スレッドIDを受け取る変数の指定はlpThreadIdパラメータで行います。

  1. WaitForSingleObject 関数は、スレッドの終了を待ちます。この関数のプロトタイプは以下のとおりです。
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD  dwMilliseconds
);

hHandleパラメータは待機するスレッドのハンドルを、dwMillisecondsは待機時間を指定します。

  1. WaitForMultipleObjects 関数: 複数のスレッドの終了を待機します。関数のプロトタイプを次に示します。
DWORD WaitForMultipleObjects(
DWORD        nCount,
const HANDLE *lpHandles,
BOOL         bWaitAll,
DWORD        dwMilliseconds
);

nCount パラメーターは待機するスレッドハンドル配列の要素数を指定し、lpHandles パラメーターはスレッドハンドル配列を指すポインターで、bWaitAll はすべてのスレッドの終了を待つかどうかを指定し、dwMilliseconds は待機する時間を指定します。

  1. ExitThread 関数: 現在のスレッドを終了させます。関数のプロトタイプは次のとおりです。
VOID ExitThread(
DWORD dwExitCode
);

なお、dwExitCodeパラメータはスレッドの終了コードを指定します。

これらの関数の利用により、C言語でWindows環境下でのマルチスレッドプログラミングを実現できます。

bannerAds