【发布时间】:2014-02-23 12:23:10
【问题描述】:
如果共享访问某个库中的代码,多个线程之间受全局互斥锁保护,当第一次获取互斥锁时,我们需要调用 pthread_mutex_init 但是如果多个线程尝试同时调用库函数,那么我们需要确保 pthread_mutex_init 只被一个线程调用一次。
我们怎样才能做到这一点?库构造函数/析构函数是一种解决方案,但库必须支持所有编译器/平台。我们可以使用计数器并使用原子 inc/dec,但每次锁定/解锁的原子 ++/-- 操作都很昂贵。我正在寻找任何其他方式。所有 cmets 将不胜感激。
【问题讨论】:
标签: linux multithreading gcc operating-system posix