Представьте для этого кода:
#include <pthread.h>
int Global;
void *Thread1(void *x) {
Global=Global+1;
return x;
}
void *Thread2(void *x) {
Global=Global+1;
Global++;
return x;
}
int main() {
pthread_t t1,t2;
pthread_create(&t1, NULL, Thread1, NULL);
pthread_create(&t2, NULL, Thread2, NULL);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
return 0;
}
В Thread2 есть две гонки данных 1) Global = Global + 1; 2) Global ++;
Но Цан всегда обнаруживает только одну расу из этого потока. (Он обнаружит 1 или 2 как расу, но не обе сразу). Есть ли способ обнаружить все расы в потоке? Или это просто ограничение Цана?