我有這樣的結構:矢量pthread_mutex_t的給我相同的地址的所有互斥
struct thread_items {
pthread_mutex_t mutex;
int i;
thread_items(pthread_mutex_t m, int i): mutex(m), i(i){}
}
我想創建這個結構數組並初始化所有互斥,而我在這。出於某種原因,當我打印互斥地址我得到的所有互斥的同一地址:
vector <thread_items*> thread_items_vec;
for (int i = 0; i < 3; i++)
{
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
thread_items * items = new thread_items(mutex, i);
thread_items_vec.push_back(items);
cout << "Mutex " << i << " is " << &mutex << endl;
}
這導致與此打印:
Mutex 0 is 0x7fff9580b520
Mutex 1 is 0x7fff9580b520
Mutex 2 is 0x7fff9580b520
我打印,這是因爲我的原因併發性有問題,我注意到我沒有鎖定正確的Mutex。
所以我的問題是我是否正確初始化互斥鎖,以便擁有3個不同的互斥鎖?我的印刷品是否真的在這裏出現問題? 從答案中,我打印始終相同的堆棧指針。這是否意味着我正在初始化我的Mutex的同一個地址?
什麼是'thread_items_map'? –
什麼是thread_items_map? –
對不起,代碼非常複雜,我試着只帶上相關的部分。我將編輯我的問題 – Eyzuky