Понимание условий гонки при разработке программного обеспечения: стратегии предотвращения и примеры кода