温馨提示×

C语言怎么传值给全局线程

小亿
87
2023-11-16 01:14:42
栏目: 编程语言

在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

在主函数中,我们创建一个线程并等待其执行完毕。最后,我们打印出全局变量 global_value 的值,以验证值是否传递成功。

请注意,当在多个线程中访问和修改全局变量时,需要使用适当的同步机制(例如互斥锁)来避免竞争条件。

0