C言語でどのようにしてグローバルスレッドに値を渡すか

C言語では、グローバル変数を使用してスレッドに値を渡すことができます。以下に例を示します:

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

int global_value = 0;

void* thread_function(void* arg) {
    int local_value = *(int*)arg;
    printf("Local value in thread: %d\n", local_value);
    global_value = local_value; // 将局部变量的值赋给全局变量
    pthread_exit(NULL);
}

int main() {
    pthread_t thread;
    int local_value = 10;

    printf("Local value in main: %d\n", local_value);

    pthread_create(&thread, NULL, thread_function, &local_value);
    pthread_join(thread, NULL);

    printf("Global value after thread execution: %d\n", global_value);

    return 0;
}

上の例では、スレッドに値を渡すためのグローバル変数global_valueを定義しています。main関数では、ローカル変数local_valueを宣言して、スレッド関数thread_functionにそのアドレスを渡しています。

スレッド関数は、arg引数を整数ポインタ型にキャストしてローカル変数のlocal_valueに代入する。その後、global_valueにこの値を代入します。

メイン関数ではスレッドを作成し、実行が完了するまで待ちます。最後に、グローバル変数グローバル_バリューの値を出力し、値の受け渡しが成功したかどうかを確認します。

マルチスレッド環境でグローバル変数にアクセス・変更する場合、競合条件を避けるために、ミューテックスなどの適切な同期機構を使用することが重要です。

bannerAds