Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C thrd_join的返回值与其res参数之间的差异?_C_C11 - Fatal编程技术网

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

C thrd_join的返回值与其res参数之间的差异?,c,c11,C,C11,我很难理解thrd_join的用法。其声明如下: int thrd_join( thrd_t thr, int *res ); 该节内容如下: 如果res不是空指针,则线程的结果代码将放在res 因此我认为变量res包含要连接的线程的返回代码。thrd_join()的返回值用于什么?这是一个代码,表示加入将成功,并且我可以认真对待res的内容吗 我有这个权利吗?线程有一个函数thrd\u start\t,它是int(*)(void*)(cf.)的typedef,也就是说,它接受一个void*,

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

int thrd_join( thrd_t thr, int *res );
该节内容如下:

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

因此我认为变量res包含要连接的线程的返回代码。thrd_join()的返回值用于什么?这是一个代码,表示加入将成功,并且我可以认真对待res的内容吗


我有这个权利吗?

线程有一个函数
thrd\u start\t
,它是
int(*)(void*)
(cf.)的typedef,也就是说,它接受一个
void*
,并返回一个
int
。此函数的返回值存储到
res
指向的位置。调用自身的返回代码是其返回值。

线程具有
thrd\u start\t
函数,该函数是
int(*)(void*)
(cf.)的typedef,即它接受
void*
,并返回
int
。此函数的返回值存储到
res
指向的位置。调用自身的返回码是它的返回值。

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

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

当错误案例有很好的概率时,最好检查错误


请注意,在
java
C
等语言中,函数返回实际输出,
异常是表示可能错误的方法

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

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

当错误案例有很好的概率时,最好检查错误



请注意,在
java
C
等语言中,函数返回实际输出,
异常是表示可能错误的方法

你从哪里得到这个函数的?如果它有一个文档,它应该告诉返回值是什么。“如果成功,
thrd\u success
,否则,
thrd\u error
。”因此,如果我得到
thrd\u error
,则连接失败并且
res
不包含有效值。如果我获得了
thrd_success
,则加入成功,并且
res
包含返回值。对吗?还有什么其他的行为呢?嗯,我没有得到一个在加入线程时可能出错的事情的列表。我认为要么线程成功退出,要么不成功。无论如何,连接都会发生。也许我错误地认为,这是我困惑的根源。你从哪里得到这个函数的?如果它有一个文档,它应该告诉返回值是什么。“如果成功,
thrd\u success
,否则,
thrd\u error
。”因此,如果我得到
thrd\u error
,则连接失败并且
res
不包含有效值。如果我获得了
thrd_success
,则加入成功,并且
res
包含返回值。对吗?还有什么其他的行为呢?嗯,我没有得到一个在加入线程时可能出错的事情的列表。我认为要么线程成功退出,要么不成功。无论如何,连接都会发生。也许我认为这是错误的——这对我来说是一个困惑的根源。这太笼统了,没有任何价值。我显然理解返回码的用途,但这个特定的案例对我来说似乎不同。@PavelMatuska并没有真正的不同。如果使用
scanf(“%d”和&number)
,则应检查其返回值。如果不是
1
,则不能信任
number
的值。不知道为什么它被否决了。可能是因为“你可以忽略那些错误代码”。@PavelMatuska正如EugeneSh所说,我认为你的案例没有太大的不同,太笼统了,没有任何价值。我显然理解返回码的用途,但这个特定的案例对我来说似乎不同。@PavelMatuska并没有真正的不同。如果使用
scanf(“%d”和&number)
,则应检查其返回值。如果不是
1
,则不能信任
number
的值。不知道为什么它被否决了。可能是因为“你可以忽略那些错误代码”。@PavelMatuska正如EugeneSh所说,我认为你的案例没有太大的不同。虽然对我个人来说没有帮助,但这是一个很好的总结,非常适合接受一个可接受的答案。如果你可以详细说明,你还需要知道什么,我会尝试更新我的答案。我可以添加一个指向标准的指针(C11草案N1570第7.26.5.6节),但我想这是显而易见的。虽然对我个人没有帮助,但这是一个很好的总结,非常适合接受答案。如果您可以详细说明,您还需要知道什么,我会尝试更新我的答案。我可以添加一个指向该标准的指针(C11草案N1570第7.26.5.6节),但我想这是显而易见的。