Пусть один поток вызывает функцию thread0, а другой потока функцию thread1. Изначально атомарный регистр rwerg хранит значение 0: По завершение обеих функции имеем следующее: egin{aligned} val 1 & =0 \ val 2 & =1 \ val 3 & =0 \ val 4 & ==2 end{aligned}
- Программирование
Условие:
Пусть один поток вызывает функцию thread0, а другой потока функцию thread1. Изначально атомарный регистр rwerg хранит значение 0:
atomic_int rwreg;
int val1, val2, val3, val4;
void thread0(void)
{
val1 = atomic_load(&rwreg); // 1
atonic_store(&rwreg, 1); // 2
val2 = atomic_load(&rwreg); // 3
}
void thread1(void)
{
val3 = atomic_load(&rwreg); // 4
atonic_store(&rwreg, 2); // 5
val4 = atomic_load(&rwreg); // 6
}
По завершение обеих функции имеем следующее:
\begin{aligned}
val 1 & =0 \\
val 2 & =1 \\
val 3 & =0 \\
val 4 & ==2
\end{aligned}
Выберите из списка всевозможные порядки выполнения атомарных операций над атомарным регистром rwerg, которые могут приводить к такому результату:
Выберите один или несколько ответов:
4,1,2,3,5,6
1,4,2,5,3,6
1,2,3,4,5,6
1,2,4,3,5,6
4,1,5,6,2,3
1,4,2,3,5,6
Решение:
Разберём задачу пошагово. Исходное состояние: атомарный регистр rwreg имеет значение 0. Опишем функции: Поток thread0 выполняет: 1. (операция 1) val1 = atomicload(rwreg); 2. (операция 2) atomicstore(rwreg, 1); 3. (операция 3) val2 = atomicload(rwreg); Поток thread1 выполняет: 4. (операция 4) val3 = atomicload(rwreg); 5. (операция 5) atomicstore(rwreg, 2); 6. (операция 6) val4 = atomicload(rwreg); Нам требуется, чтобы по завершении: val1 = 0, val2 = 1, val3 = 0, val4 = 2. Заметим, что внутри каждой функции операции выполняются в строго заданном порядке: в thread0 – 1, затем 2, затем 3; в ...
Похожие задачи
Не нашел нужную задачу?
Воспользуйся поиском
AI помощники
Выбери предмет
- Правоохранительные органы
- Пожарная безопасность
- Парикмахерское искусство
- Природообустройство и водопользование
- Почвоведение
- Приборостроение и оптотехника
- Промышленный маркетинг и менеджмент
- Производственный маркетинг и менеджмент
- Процессы и аппараты
- Программирование
- Право и юриспруденция
- Психология
- Политология
- Педагогика
- Трудовое право
- Теория государства и права (ТГП)
- Таможенное право
- Теория игр
- Текстильная промышленность
- Теория вероятностей
- Теоретическая механика
- Теория управления
- Технология продовольственных продуктов и товаров
- Технологические машины и оборудование
- Теплоэнергетика и теплотехника
- Туризм
- Товароведение
- Таможенное дело
- Торговое дело
- Теория машин и механизмов
- Транспортные средства