【发布时间】:2015-05-18 17:57:21
【问题描述】:
如果一个 pthread 拥有一个 mutex,然后调用 pthread_create,那么新线程是拥有该 mutex,还是两者都拥有,还是只拥有原始线程?
【问题讨论】:
如果一个 pthread 拥有一个 mutex,然后调用 pthread_create,那么新线程是拥有该 mutex,还是两者都拥有,还是只拥有原始线程?
【问题讨论】:
原始线程仍然拥有互斥锁。创建线程对互斥体所有权没有影响。
如果是其他方式,调用可能创建线程的代码将非常困难,因为该代码必须知道它持有的每个互斥体。
例如,假设您实现了一些具有sort 算法的集合类。您不知道调用者在调用 sort 函数时可能持有什么互斥锁。如果您想更改sort 算法以使用一些辅助线程,您会怎么做?您如何处理您可能持有或可能不持有的互斥锁?这会造成不可能的情况。
【讨论】: