0

查看pthread_*诸如pthread_rwlock_destroy和许多其他功能的文档,这就是文档的措辞:

返回值

如果成功,pthread_rwlock_destroy() 和 pthread_rwlock_init() 函数将返回零;否则,应返回错误号以指示错误。

[EBUSY] 和 [EINVAL] 错误检查(如果实施)就像在函数处理开始时立即执行一样,并在修改 rwlock 指定的读写锁的状态之前导致错误返回。

这表示如果发生错误,应返回错误号。然后,它解释了错误代码:

错误

如果出现以下情况,pthread_rwlock_destroy() 函数可能会失败:

[EBUSY]
实现检测到尝试在锁定时销毁 rwlock 引用的对象。
...

其中没有提到EBUSY本身是返回还是-EBUSY. 当函数返回错误代码时,几乎在我看到的所有地方,它们都会返回-E*****.

这是否意味着pthread_*函数也遵循这个约定?我应该检查返回值-EBUSY还是EBUSY本身?

在同一主题上,他们会存储EBUSYerrnoor中-EBUSY吗?

4

1 回答 1

4

它们返回正数的错误代码。应用程序不可见的任何内容都不会返回否定的错误代码。这是内核的实现细节。

于 2013-03-19T18:09:10.790 回答