Я читал о неупорядоченной гонке в модели памяти C++. Если я правильно понял, когда я читаю и записываю в одной строке в одну и ту же переменную, не указывается, произойдет ли чтение до или после записи. Я пытался (исключительно в образовательных целях!) найти пример, который продемонстрировал бы это на моем Mac m1. Я подумал о чем-то вроде
Код: Выделить всё
#include
int main(){
int x = 0;
for(int i = 0; i < 1000000; i++){
x = x++; // read and write happen in the same line -> unsequenced race
}
printf("x is : %d\n", x);
return 0;
}
но в конце я получаю x=0, что и произошло бы, если бы операция была упорядочена. Я надеялся получить что-то среднее между 0 и 1000000. Есть ли другой пример, демонстрирующий это?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... enced-race