【发布时间】:2016-02-10 14:22:12
【问题描述】:
在纯 C 中,pthread_cond_wait 和 pthread_cond_signal / pthread_cond_destroy, pthread_cond_init 是否设置 errno 以防出错?或者他们只是返回一个值!= 0?
【问题讨论】:
-
是的,我做了,但它没有指定,它只是说它返回一个值!= 然后 0,现在我的问题是,我如何在运行时对其进行错误检查?我应该这样做 if(pthread_cond_wait(&cond,&mutex) != 0) { perror....} 吗?
-
int ret = pthread_cond_signal(...); switch (ret) { case 0: break; case EINVAL: /* handle the error */break; /*other error cases for other functions*/}. -
这个
if(pthread_cond_wait(&cond,&mutex)) { handle error };不也可以吗?如,它是否仍然运行该函数,如果它返回 0,它将继续运行,如果它返回 != 0 它将跳转到 if 语句? @mch -
是的,但是在这种情况下,您只知道发生了错误,而不是发生了错误。
标签: c multithreading signals posix init