gpt4 book ai didi

C - 主线程结果

转载 作者:行者123 更新时间:2023-12-03 12:52:21 26 4
gpt4 key购买 nike

我正在学习 C,但我的书提供的资源很少。我想知道这是否可能,并且使用线程来详细说明某些内容然后将结果传递给主线程很有用。以防万一,我想知道如何将信息从线程传递到主线程(类似于java中的方法返回)。唯一的解决方案是使用全局变量?
这是一个小例子来解释我想做的事情。这可能/有用吗?

主要的:

int i = 1;
pthread_create(tid,NULL,functionTH,NULL);
int z = //getResultFromThread

线程“功能”:
void * functionTH(){
int z = 2;
//return value 2 to the main and assign it to k in the main.
}

最佳答案

pthread_create的原型(prototype).

int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);

您的线程( start_routine )是一个返回 void * 的函数.所以你的代码是错误的,因为你的线程函数什么都不返回。你可以猜到,你通过返回一个指针来向你的主线程返回一个值。

您可以通过调用 pthread_join 等待线程完成读取该值。 .从线程返回的值通过 value_ptr 传递。参数。

The pthread_join() function shall suspend execution of the calling thread until the target thread terminates, unless the target thread has already terminated. On return from a successful pthread_join() call with a non-NULL value_ptr argument, the value passed to pthread_exit() by the terminating thread shall be made available in the location referenced by value_ptr.



当然,您不必使用这种机制。全局变量可以正常工作,但您必须同步对变量的访问,否则您最终会遇到竞争条件。

关于C - 主线程结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com