C言語でマルチスレッドを実装する方法

C 言語でマルチスレッドを実装するには、POSIX スレッドライブラリ (pthread) や Windows スレッドライブラリなどを利用できます。以下は、POSIX スレッドライブラリを利用してマルチスレッドを実装する例です。

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

// 线程函数,传入一个整数参数
void* thread_func(void* arg) {
    int n = *(int*)arg;
    printf("Hello from thread %d\n", n);
    pthread_exit(NULL);
}

int main() {
    int num_threads = 5;
    pthread_t threads[num_threads];
    int thread_args[num_threads];

    // 创建多个线程
    for (int i = 0; i < num_threads; i++) {
        thread_args[i] = i;
        pthread_create(&threads[i], NULL, thread_func, &thread_args[i]);
    }

    // 等待每个线程结束
    for (int i = 0; i < num_threads; i++) {
        pthread_join(threads[i], NULL);
    }

    printf("All threads are done.\n");
    return 0;
}

この例では、thread_funcはスレッドのIDを印字するスレッド関数です。main関数はまず複数のスレッドを作成し、各スレッドに整数の引数を渡した後に各スレッドが実行されるまで待ちます。最後に、すべてのスレッドが終了したことを示す情報を出力します。

上記コードをコンパイルするには、次のコマンドを使用します。

gcc -o multithreading multithreading.c -lpthread

マルチスレッド化された実行ファイルが生成され、実行すると複数のスレッドが順番に自身の識別番号を出力し、最後にすべて終了した旨のヒント信息を出力する

マルチスレッドを利用する際は、スレッド間の同期や排他制御に気を配り、競合状態やデータアクセス競合などの問題が生じないようにしてください。

bannerAds