c++ - 使用新线程复制互斥锁所有权

标签 c++ pthreads mutex

如果一个 pthread 拥有一个互斥锁,然后调用 pthread_create,新线程是拥有该互斥锁,两者都拥有,还是只拥有原始线程?

最佳答案

原始线程仍然拥有互斥体。创建线程对互斥量所有权没有影响。

否则,调用可能创建线程的代码将极其困难,因为该代码必须知道它持有的每个互斥量。

例如,假设您实现了一些具有排序 算法的集合类。您不知道调用者在调用您的 sort 函数时可能持有什么互斥量。如果您想更改 sort 算法以使用几个辅助线程,您会怎么做?你如何处理你可能持有或不持有的互斥体?这会造成不可能的情况。

关于c++ - 使用新线程复制互斥锁所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309937/

相关文章:

c++ - 向主线程发出一批线程已完成的信号

从 pthread_create 中的函数调用 C 程序

c++ - C++中的消费者/生产者

python - 非成员运算符重载(特别是运算符==)在 Cython 中是否被破坏?

c++ - 安卓工作室 3.2 : where is cmake message() output displayed?

c - 线程池如何在 C 中创建带队列的线程池?

go - 如何在 Golang 中对多个变量应用单独的 Mutex?

c++ - C/C++如何调用外部程序并获取多个返回值?

c++ - 我有非常量 ID3D11ShaderResourceView*,并且 DirectX 函数需要 const 一个

c++ - 启动多个线程 - 实例化错误 (C++)