2011-gre-cs-practice-book.pdf/Q47 — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Вопрос: Q47-08c765)
 
(не показаны 3 промежуточные версии 2 участников)
Строка 18: Строка 18:
 
Какие из следующих утверждений должны быть истинными?
 
Какие из следующих утверждений должны быть истинными?
  
* I. a == 0 → b == 1
+
;I: a == 0 → b == 1
* II. b == 0 → a == 1
+
;II: b == 0 → a == 1
* III. a == 1 → b == 1
+
;III: a == 1 → b == 1
  
 
=== Ответы ===
 
=== Ответы ===
* (A) Только I
+
* Только I
* (B) Только II
+
* Только II
* (C) Только III
+
* Только III
 
* Правильный ответ: (D) I и II
 
* Правильный ответ: (D) I и II
* (E) I, II и III
+
* I, II и III
  
 
=== Объяснение ===
 
=== Объяснение ===
 +
{{cstest-source|2011-gre-cs-practice-book.pdf|38|47}}
 +
 
Разберём каждый случай:
 
Разберём каждый случай:
* I. a == 0 → b == 1
+
;I.: a == 0 → b == 1
Если a == 0, то задача 1 выполнилась полностью раньше задачи 2. Следовательно, b == 1 и это утверждение верно.
+
* Если a == 0, то задача 1 выполнилась полностью раньше задачи 2.
* II. b == 0 → a == 1
+
* Следовательно, b == 1 и это утверждение верно.
Если b == 0, то задача 2 выполнилась полностью раньше задачи 1. Следовательно, a == 1 и это утверждение верно.
+
;II: b == 0 → a == 1
* III. a == 1 → b == 1
+
* Если b == 0, то задача 2 выполнилась полностью раньше задачи 1.
В данном случае мы не можем гарантировать, что b == 1. Оно может быть равно как 1, так и 0.
+
* Следовательно, a == 1 и это утверждение верно.
 +
;III: a == 1 → b == 1
 +
* В данном случае мы не можем гарантировать, что b == 1.
 +
* Оно может быть равно как 1, так и 0.
  
{{cstest-source|2011-gre-cs-practice-book.pdf|38|46}}
+
{{question-ok|[[Участник:StasFomin|StasFomin]] 10:10, 9 января 2025 (UTC)}}
  
{{question-ok|}}
+
[[Категория:Параллельные вычисления]]
{{reserve-task|[[Участник:Nikitashapovalov|Nikitashapovalov]] 20:53, 8 января 2025 (UTC)}}
+

Текущая версия на 10:10, 9 января 2025

Вопрос: 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.