C言語のcreatethread関数の使い方は?

CreateThread関数は、Windowsオペレーティングシステムで提供され、C言語で使用されるスレッドを作成するための関数です。

以下の形式の関数です。

HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);

パラメータの説明:

  1. lpThreadAttributes:スレッドオブジェクトのセキュリティ属性。既定値は NULL です。
  2. dwStackSize:スレッドのスタックサイズです。 デフォルトは0で、これはデフォルトサイズを使用することを意味します。
  3. lpStartAddress:スレッドの開始アドレス、つまりスレッド関数のアドレス。
  4. lpParameter は、スレッド関数に渡されるパラメーターです。
  5. dwCreationFlags:スレッドの作成フラグ。スレッドをすぐに実行するか、作成時に休止状態にするかなどが指定されます。
  6. lpThreadId: 受信スレッド識別子を指す変数。

CreateThread関数は、スレッドのハンドル(HANDLE型)を返し、このハンドルを使用してスレッドを操作できます。

CreateThread 関数を使用したスレッドの作成の基本的な手順は次のとおりです。

  1. スレッドが実行するタスク、スレッド関数を定義します。
  2. CreateThread 関数を使用してスレッドを作成します。
  3. スレッドハンドルを利用することで、スレッドの操作(スレッド終了待ち、スレッドの強制終了など)を行う。
  4. スレッドリソースの解放

サンプルコード:

#include <stdio.h>
#include <windows.h>

DWORD WINAPI threadFunc(LPVOID lpParam) {
    printf("Hello from thread!\n");
    return 0;
}

int main() {
    HANDLE hThread;
    DWORD threadId;

    hThread = CreateThread(NULL, 0, threadFunc, NULL, 0, &threadId);
    if (hThread == NULL) {
        printf("Failed to create thread.\n");
        return 1;
    }

    printf("Thread created with ID: %d\n", threadId);

    // ... 其他操作

    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);

    return 0;
}

上記のコード例では、CreateThread関数がスレッドの作成に用いられ、WaitForSingleObject関数がスレッドの終了を待つために使用されます。

bannerAds