1
爲什麼這個代碼是壞有人可以給我解釋一下:互斥理解
int data;
void* worker(void* arg __attribute__((unused))) {
pthread_mutex_t m;
pthread_mutex_init(&m, NULL);
for (int i = 0; i < N; i++) {
pthread_mutex_lock(&m);
data++;
pthread_mutex_unlock(&m);
}
pthread_mutex_destroy(&m);
return NULL;
}
這是確定的:
int data;
pthread_mutex_t m;
void* worker(void* arg __attribute__((unused))) {
for (int i = 0; i < N; i++) {
pthread_mutex_lock(&m);
data++;
pthread_mutex_unlock(&m);
}
return NULL;
}
// ...
pthread_mutex_init(&m, NULL);
// ...
pthread_mutex_destroy(&m);
// ..
我總是需要在全球範圍內聲明的變量互斥?
錯誤代碼的實際含義是什麼? –
它在某些輸入上無法正常工作。 – Welez
http://stackoverflow.com/a/12776593/4593781,這篇文章可以幫助 –