Я симулировал состояние гонки между потоками в C ++ с помощью "pthread.h"
при запуске он выдает ошибку при «случайной» итерации цикла.
Могу ли я использовать его как генератор случайных чисел?
А почему?
#include<cstdio>
#include<thread>
static int counter = 0;
void increase() {
register int i = counter;
i++;
counter = i;
}
void decrease() {
register int i = counter;
i--;
counter = i;
}
int main() {
std::thread *p1, *p2;
register int i = 0;
while (1) {
i++;
counter = 0;
p1 = new std::thread(increase);
p2 = new std::thread(decrease);
p1->join();
p2->join();
delete p1;
delete p2;
if (counter) {
std::fprintf(stderr, "Error at loop %d\n", i);
std::exit(1);
}
}
std::exit(0);
}