gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:48 25 4
gpt4 key购买 nike

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

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

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

最佳答案

尽管 POSIX 明确考虑到这些函数可能会由于缺乏资源(EAGAINENOMEM 错误代码)而失败,但 Linux glibc 和 OSX 实现都不是 pthread_mutex_init()pthread_cond_init() 分配任何资源。您可以通过直接检查源代码看到这一点:

pthread_mutex_init() 的 Linux glibc 实现在 nptl/pthread_mutex_init.c 中(参见函数 __pthread_mutex_init())。

pthread_cond_init() 的 Linux glibc 实现在 nptl/pthread_cond_init.c 中(参见函数 __pthread_cond_init())。

pthread_mutex_init() 的 OSX 实现在 libpthread/pthread_mutex.c 中(参见函数 pthread_mutex_init()_pthread_mutex_init())和 libpthread/internal.h (参见宏 _PTHREAD_LOCK_INIT)。

pthread_cond_init() 的 OSX 实现在 libpthread/pthread_cond.c 中(参见函数 pthread_cond_init()_pthread_cond_init())。

关于linux - 未使用的 pthread 互斥锁或条件变量分配哪些资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46552053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com