我需要在pthread互斥體上編寫一個C++包裝器,並且在執行運算符==時遇到問題。有沒有辦法爲我可以用於測試的pthread_mutex獲取某種類型的唯一ID?如何測試兩個pthread互斥體的相等性?
編輯:
更具體什麼我想acheive我有以下幾點:
pthread_mutex_t mutex1;
pthread_mutex_t mutex2;
pthread_mutex_t mutex3;
pthread_mutex_init(&mutex1, NULL);
pthread_mutex_init(&mutex2, NULL);
mutex3 = mutex2;
我想有一個bool mutexCompare(pthread_mutex_t t1, pthread_mutex_t t2)
函數將返回false爲mutexCompare(mutex1, mutex2)
對於mutexCompare(mutex2, mutex3)
已經有int pthread_equal(ptrhead_t t1, pthread_t t2)
這是我所需要的線程。我需要一個類似的互斥體。
編輯:
mutex3 = mutex2;
上述分配高度氣餒。 POSIX文件指出
"There are no defined comparison or assignment operators for the types pthread_attr_t, pthread_cond_t, pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t, pthread_rwlock_t and pthread_rwlockattr_t."
的pthread_mutex_t的對象(和其他人從名單)應該進行比較,並通過他們的地址分配。
總是最好發佈一些代碼來確定你正在使用的問題 – krisdyson 2014-09-24 07:32:53
你期望什麼語義?在我看來,'operator =='應該可以比較'pthread_mutex_t'成員的內存地址,但是你可能會想要檢查它們是否處於相同的鎖定/解鎖狀態。您是否期望這些包裝器支持複製,以及如果是這樣,使用互斥量的所有權語義,這是相關的。例如,您可能希望任何副本最初都有新的互斥鎖重置,這反映了您將複製鎖定對象然後成爲新對象的唯一訪問者的想法,而無需仲裁訪問權限。 – 2014-09-24 08:14:04
目前尚不清楚你的意思。兩個互斥體是相等的意味着什麼?同一種類型和相同的狀態? – 2014-09-24 08:17:22