2011-gre-cs-practice-book.pdf/Q47 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q47-08c765 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…») |
StasFomin (обсуждение | вклад) |
||
(не показано 10 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q47-08c765 == | == Вопрос: Q47-08c765 == | ||
− | + | Рассмотрим следующие 2 многопоточные задачи, в которых операции присваивания исполняются атомарно. Изначально, переменные с разделяемым состоянием x и y равны 0. | |
− | + | ||
− | + | ||
− | + | ||
− | + | * Задача 1 | |
− | + | <code-c> | |
+ | x = 1 | ||
+ | a = y | ||
+ | </code-c> | ||
− | + | * Задача 2 | |
+ | <code-c> | ||
+ | y = 1 | ||
+ | b = x | ||
+ | </code-c> | ||
− | + | В конце выполнения обеих многопоточных задач значения переменных 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 | ||
=== Объяснение === | === Объяснение === | ||
− | + | {{cstest-source|2011-gre-cs-practice-book.pdf|38|47}} | |
− | {{cstest-source|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. | ||
− | + | {{question-ok|[[Участник:StasFomin|StasFomin]] 10:10, 9 января 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.