2011-gre-cs-practice-book.pdf/Q47
Материал из DISCOPAL
Вопрос: Q47-08c765
Рассмотрим следующие 2 многопоточные задачи, в которых операции присваивания исполняются атомарно. Изначально, переменные с разделяемым состоянием x и y равны 0.
- Задача 1
x = 1 a = y
- Задача 2
y = 1 b = x
В конце выполнения обеих многопоточных задач значения переменных a и b проверяются. Какие из следующих утверждений должны быть истинными?
- I
- a == 0 → b == 1
- II
- b == 0 → a == 1
- III
- a == 1 → b == 1
Ответы
- Только I
- Только II
- Только III
- Правильный ответ: (D) I и II
- I, II и III
Объяснение
Исходники — вопрос 47 на 38 странице книги «2011-gre-cs-practice-book.pdf»
Разберём каждый случай:
- I.
- a == 0 → b == 1
- Если a == 0, то задача 1 выполнилась полностью раньше задачи 2.
- Следовательно, b == 1 и это утверждение верно.
- II
- b == 0 → a == 1
- Если b == 0, то задача 2 выполнилась полностью раньше задачи 1.
- Следовательно, a == 1 и это утверждение верно.
- III
- a == 1 → b == 1
- В данном случае мы не можем гарантировать, что b == 1.
- Оно может быть равно как 1, так и 0.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.