0Pricing
C Academy · レッスン

スレッドの作成と管理

POSIXスレッド(pthread)を使ってCでスレッドを作成・制御します

「スレッドの作成と管理」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。

スレッドの作成と管理

スレッドの作成と管理

マルチスレッドでは、タスクを同時に実行するために複数のスレッドを作成します。

このレッスンでは、次のことを学びます。

  • Cで複数のスレッドを作成する方法。
  • スレッドの実行が終了するまで待機する方法。
  • スレッドに引数を渡す方法。
スレッドの作成と管理 — イラスト1

複数のスレッドの作成

複数のスレッドの作成

pthread_create()を使用して複数のスレッドを作成します。

構文:

pthread_create(&thread, NULL, function, argument);

各スレッドは独立して実行されますが、ほかのスレッドとメモリを共有します。

例:複数のスレッドの作成

例:複数のスレッドの作成

このプログラムでは、同時に実行される複数のスレッドを作成します。

#include <stdio.h>
#include <pthread.h>

void *printMessage(void *arg) {
    printf("Thread %d: Hello from thread!\n", *(int*)arg);
    return NULL;
}

int main() {
    pthread_t threads[3];
    int thread_ids[3] = {1, 2, 3};

    for (int i = 0; i < 3; i++) {
        pthread_create(&threads[i], NULL, printMessage, &thread_ids[i]);
    }

    for (int i = 0; i < 3; i++) {
        pthread_join(threads[i], NULL);
    }
    return 0;
}

スレッドの終了を待機する

スレッドの終了を待機する

pthread_join()を使用して、スレッドの完了を待機します。

構文:

pthread_join(thread, NULL);

pthread_join()を使用しない場合、ほかのスレッドが終了する前にメインスレッドが終了する可能性があります。

スレッドに引数を渡す

スレッドに引数を渡す

ポインターを使用して、スレッド関数に引数を渡すことができます。

例:

pthread_create(&thread, NULL, function, (void*)&value);

スレッド関数では、引数を元の型にキャストして戻します。

例:スレッドに引数を渡す

例:スレッドに引数を渡す

このプログラムでは、スレッド関数に引数を渡す方法を示します。

#include <stdio.h>
#include <pthread.h>

void *printNumber(void *arg) {
    int num = *(int*)arg;
    printf("Thread received number: %d\n", num);
    return NULL;
}

int main() {
    pthread_t thread;
    int value = 10;
    pthread_create(&thread, NULL, printNumber, &value);
    pthread_join(thread, NULL);
    return 0;
}

スレッドの終了

スレッドの終了

pthread_exit()を使用して、スレッドを明示的に終了します。

例:

pthread_exit(NULL);

必要に応じて、メイン関数でもpthread_exit()を呼び出す必要があります。

スレッド管理のベストプラクティス

スレッド管理のベストプラクティス

スレッドを効率的に管理するには、次の点に注意します。

  • 早期終了を避けるため、必ずpthread_join()を使用します。
  • データ破損を避けるため、ポインターを使用して引数を渡します。
  • 共有リソースの競合を最小限に抑えます。

まとめ

まとめ

このレッスンでは、次のことを学びました。

  • pthread_create()を使用して複数のスレッドを作成する方法。
  • pthread_join()を使用してスレッドを待機する方法。
  • スレッドに引数を渡す方法。
  • スレッドを安全に終了する方法。

次は、マルチスレッドにおける同期と競合状態について見ていきます。

スレッドの作成と管理 — イラスト10

よくある質問

「スレッドの作成と管理」レッスンは無料ですか?

はい。「スレッドの作成と管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全3レッスンが含まれています。

「スレッドの作成と管理」で何を学びますか?

POSIXスレッド(pthread)を使ってCでスレッドを作成・制御します ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「スレッドの作成と管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC Academyレッスンでコードを書いて実行できますか?

はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. スレッドの概要
  2. スレッドの作成と管理
  3. 同期と競合状態
← C Academyに戻る