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;
}
そして、これはokです:
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、この投稿は役に立ちます –