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

时间:2015-05-18 17:57:21

标签: c++ pthreads mutex

如果pthread拥有互斥锁然后调用pthread_create,新线程是否拥有互斥锁,同时执行这两个操作,还是仅执行原始线程?

1 个答案:

答案 0 :(得分:3)

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

如果是其他任何方式,调用可能创建线程的代码将非常困难,因为该代码必须知道它所持有的每个互斥锁。

例如,假设您实现了一个具有program.description.split(' ').each_with_index do |word, index| 算法的集合类。您不知道调用者在调用sort函数时可能持有的互斥锁。如果要将sort算法更改为使用一些辅助线程,您会怎么做?您如何处理可能存在或可能不存在的互斥锁?这会造成一种不可能的情况。