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

avatar
作者
猴君
阅读量:0

在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 的值,以验证值是否传递成功。

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!