gpt4 book ai didi

c - pthread_exit 和 pthread_join

转载 作者:行者123 更新时间:2023-11-30 20:33:27 25 4
gpt4 key购买 nike

我想从函数1创建一个线程来执行函数2。要获取函数2到函数1的完成状态,我需要做什么?函数2中是否强制pthread_exit将状态变量返回给函数1?

函数 2 的返回类型也应该是 void* 吗?那么变量状态的类型是什么(例如我想使用 BOOL)?

最佳答案

I want to create a thread from function 1 to execute function 2. To get the status of completion of function 2 to function 1, what I need to do?

你有基本相同的three alternatives a function has for providing a computed value to a caller in the same thread 。然而,对于指针或整数类型的单个返回值,线程的返回值是提供此类值的特别方便的方式。然而,在尝试获取值之前确保子线程完成会带来额外的复杂性。对于该部分,您可以使用 pthread_join()

Is pthread_exit mandatory in function 2 to return back the status variable to function 1?

没有。当在首次调用线程函数时执行 return 语句时,线程也会退出。这相当于将指定的返回值作为参数传递给pthread_exit()。在我的书中,从调用返回更加清晰,但是 pthread_exit() 的优点是线程可以从任何函数的任何位置调用它。

Also should return type of function 2 be void*?

您不仅可以,而且必须将线程函数的返回值声明为void *。这是此类函数类型的重要组成部分,如果您尝试使用具有不同返回类型的线程启动函数,则会调用未定义的行为。

What can be the type of variable status ( eg. I want to use BOOL) then?

C 没有名为“BOOL”的类型。它具有 _Bool 和其他整数类型,如果您使用 stdbool.h,那么它具有宏 bool 作为 的替代拼写_ bool 。对于如何从线程返回这样的值,您有多种选择;一种方法是将其转换为 void * 并让父线程将结果转换回来。另一种方法是使用 NULL 来表示 false,并使用任何其他值来表示 true。如果您愿意,可以直接在 C 条件表达式中使用这些值,而无需进行强制转换。

关于c - pthread_exit 和 pthread_join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284411/

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