Я действительно новичок в многопоточном программировании. Действительно запутался в определении. Скажем, у меня есть два потока
x, y, z = 0;
Thread 1:
lock(x);
lock(y);
x = y + 1;
unlock(x);
unlock(y);
Thread 2:
lock(x);
lock(z);
z = x + 1;
unlock(x);
unlock(z);
Вы можете видеть, что значение z зависит от того, какой поток выполняется первым. Если поток 1 предшествует потоку 2, z = 2; если поток 2 выполняется первым, z = 1. Согласно многим существующим ответам, например, Это условие гонки? , я полагаю, что многие думают, что это не так. Но результат непредсказуем - зависеть от планирования потоков все еще звучит странно для меня. Это ошибка семантики c? Люди когда-нибудь пишут такие многопоточные программы? Спасибо за любые комментарии !!