未使用的pthread互斥锁或条件变量分配了哪些资源?

时间:2017-10-03 19:32:26

标签: linux macos pthreads mutex condition-variable

假设我有一个互斥/条件变量。我初始化(pthread_mutex_init / pthread_cond_init),但从不使用它们(没有锁定操作,没有信号/等待)。

这些未使用的对象是否会分配除占用内存以外的其他资源?

(我对这方面的linux和OSX行为感兴趣)

1 个答案:

答案 0 :(得分:1)

虽然POSIX明确考虑到这些函数可能由于缺少资源(_getRowHeight({ index }) { const { list } = this.context; return this._getDatum(list, index).size; } EAGAIN错误代码)而失败,但是{gl}和ENOMEMpthread_mutex_init()的OSX实现都没有{1}}分配任何资源。您可以通过直接检查源代码来看到这一点:

pthread_cond_init()的Linux glibc实现位于nptl/pthread_mutex_init.c(请参阅函数pthread_mutex_init())。

__pthread_mutex_init()的Linux glibc实现位于nptl/pthread_cond_init.c(请参阅函数pthread_cond_init())。

__pthread_cond_init()的OSX实施位于libpthread/pthread_mutex.c(请参阅函数pthread_mutex_init()pthread_mutex_init())和libpthread/internal.h(请参阅宏_pthread_mutex_init() )。

_PTHREAD_LOCK_INIT的OSX实施位于libpthread/pthread_cond.c(请参阅函数pthread_cond_init()pthread_cond_init())。