1
如果一個pthread擁有一個互斥鎖,然後調用pthread_create,那麼新線程是否擁有互斥鎖,執行這兩個操作,還是隻執行原始線程?用新線程複製互斥鎖的所有權
如果一個pthread擁有一個互斥鎖,然後調用pthread_create,那麼新線程是否擁有互斥鎖,執行這兩個操作,還是隻執行原始線程?用新線程複製互斥鎖的所有權
原始線程仍然擁有該互斥鎖。創建線程對互斥量的所有權沒有影響。
如果是其他方式,調用可能會創建線程的代碼將非常困難,因爲代碼必須知道它所擁有的每個互斥量。
例如,假設您實現了一些具有sort
算法的集合類。你不知道當調用你的sort
函數時,調用者可能會持有哪些互斥鎖。如果你想改變sort
算法以使用一些輔助線程,你會怎麼做?你對可能或不可能持有的互斥體做了什麼?這將創造一個不可能的情況。