2017-06-04 46 views
5

考慮下面的代碼:我可以在使用此mutexattr初始化的互斥體使用之前摧毀一個mutexattr對象嗎?

pthread_mutexattr_t attr; 
pthread_mutexattr_init(&attr); 
pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST); 

pthread_mutex_t mut; 
pthread_mutex_init(&mut, &attr); 

pthread_mutexattr_destroy(&attr); 

pthread_mutex_lock(&mut); 

這段代碼合法嗎?

如果允許互斥體包含對它初始化的屬性對象的引用,那麼我想我在使用互斥體之前可能不會調用pthread_mutexattr_destroy(&attr)

回答

6

manual說:

後互斥屬性對象已被用來初始化一個或多個互斥體,影響屬性對象的任何函數(包括銷燬)不得影響任何先前初始化的互斥鎖。

所以,你的代碼是有效的(但不要忘了檢查這些功能的潛在錯誤)。

相關問題