如果一个 pthread 拥有一个互斥锁,然后调用 pthread_create,新线程是拥有该互斥锁,两者都拥有,还是只拥有原始线程?
最佳答案
原始线程仍然拥有互斥体。创建线程对互斥量所有权没有影响。
否则,调用可能创建线程的代码将极其困难,因为该代码必须知道它持有的每个互斥量。
例如,假设您实现了一些具有排序
算法的集合类。您不知道调用者在调用您的 sort
函数时可能持有什么互斥量。如果您想更改 sort
算法以使用几个辅助线程,您会怎么做?你如何处理你可能持有或不持有的互斥体?这会造成不可能的情况。
关于c++ - 使用新线程复制互斥锁所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309937/