阅读量: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
的值,以验证值是否传递成功。
请注意,当在多个线程中访问和修改全局变量时,需要使用适当的同步机制(例如互斥锁)来避免竞争条件。