假设我有一个互斥/条件变量。我初始化(pthread_mutex_init / pthread_cond_init),但从不使用它们(没有锁定操作,没有信号/等待)。
这些未使用的对象是否会分配除占用内存以外的其他资源?
(我对这方面的linux和OSX行为感兴趣)
答案 0 :(得分:1)
虽然POSIX明确考虑到这些函数可能由于缺少资源(_getRowHeight({ index }) {
const { list } = this.context;
return this._getDatum(list, index).size;
}
和EAGAIN
错误代码)而失败,但是{gl}和ENOMEM
或pthread_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()
)。