Я учусь на курс по информатике и столкнулся с интересной проблемой. Недавнее назначение включало методы синхронизации для pthreads. Студенты должны были избегать взаимных блокировок, используя мьютексы, барьеры, условные переменные и т. Д. Каждый учащийся использует одну и ту же версию Ubuntu на виртуальной машине VMWare (либо Workstation, либо Fusion, в зависимости от их системы). Очевидно, что ОС хоста может отличаться для каждого студента.
Теперь вот запутанная часть: поведение синхронизации у некоторых студентов сильно отличается от того, что я вижу, когда запускаю их программу. Для некоторых студентов я могу выполнить ее задание и сразу увидеть тупик. Однако, когда она запускает его дома, она никогда не заходит в тупик.
Насколько я понимаю, поведение взаимоблокировки зависит только от планировщика гостевой ОС. ОС хоста не должна иметь к этому никакого отношения. Тем не менее, несмотря на то, что у нас у всех одинаковые гостевые ОС, проблема сохраняется. Кто-нибудь знает, почему это может быть?
Спасибо!