thrd_join的返回值与其res参数之间的差异?

时间:2017-05-31 17:41:32

标签: c c11

我很难理解thrd_join的用法。它的声明如下:

int thrd_join( thrd_t thr, int *res );

该部分内容如下:

  

如果 res 不是空指针,则将线程的结果代码放到 res

指向的位置

所以我认为变量 res 包含要连接的线程的返回码。当时用于 thrd_join()的返回值是多少?这是一个代码表示加入是否成功以及我是否可以认真对待 res 的内容?

我有这个权利吗?

2 个答案:

答案 0 :(得分:2)

主题为started,函数为thrd_start_t,其为int(*)(void*)的typedef(参见here),即它需要void *,并且返回int。此函数的返回值存储在res指向的位置。调用thrd_join本身的返回码是它的返回值。

答案 1 :(得分:-2)

该函数与C中的许多函数类似,其中函数返回表示错误或成功的“错误代码”,并且函数具有保存实际输出的out参数。

在某些情况下,您可以忽略这些错误代码,例如printf也会返回int,但我们通常不会检查其返回类型。

如果错误情况很有可能,那么检查错误是好的。

请注意,在javaC#等语言中,函数返回实际输出,Exceptions是表示可能错误的方法。