Главная / Программирование /
Параллельное программирование с помощью языка C# / Тест 3
Параллельное программирование с помощью языка C# - тест 3
Упражнение 1:
Номер 1
При каких условиях поток находится в состоянии "Готовый"?
Ответ:
 (1) создан экземпляр класса Thread.
 
 (2) объект типа Thread
запущен с помощью метода Start
 
 (3) поток выполняется на процессоре (ядре процессора) 
 (4) выполняющийся поток выгружен по истечении кванта времени 
Номер 2
В каких состояниях может находиться поток в процессе работы, если он не выполняет операций ввода-вывода, обращений к функциям ядра и не приостанавливается другими потоками?
Ответ:
 (1) "Готовый" 
 (2) "Ожидающий" 
 (3) "Приостановленный" 
 (4) "Выполняющийся" 
Номер 3
В какое состояние может перейти поток после завершения операции ввода-вывода, если до операции поток выполнялся?
Ответ:
 (1) "Приостановленный" 
 (2) "Ожидающий" 
 (3) "Выполняющийся" 
 (4) "Готовый" 
Упражнение 2:
Номер 1
Число рабочих потоков в пуле зависит от следующих факторов:
Ответ:
 (1) возможности вычислительной системы (число процессоров/ядер) 
 (2) загруженность вычислительной системы 
 (3) параметры пула потоков 
 (4) число рабочих элементов, добавленных в пул потоков 
Номер 2
Второй аргумент в вызове метода пула потоков задает:ThreadPool.QueueUserWorkItem(f, 5);
Ответ:
 (1) число потоков, которые будет выполнять метод f
 
 (2) время до запуска метода f
 
 (3) число копий метода f
, которые добавляются в пул потоков 
 (4) аргумент метода f
 
Номер 3
Для выполнения пользовательских задач с помощью пула потоков необходимо:
Ответ:
 (1) создать экземпляр класса ThreadPool
 
 (2) задать параметры пула потоков 
 (3) использовать метод для добавления рабочих элементов QueueUserWorkItem
 
 (4) использовать метод для начала работы пула Start
 
Упражнение 3:
Номер 1
В рабочей функции потока используется переменная SomeVal
типа int.
Переменная является локальной для каждого потока в следующих случаях:
Ответ:
 (1) переменная объявлена внутри рабочей функции потока 
 (2) переменная класса, используемого в рабочей функции, объявлена с модификатором private.
 
 (3) переменная класса, используемого в рабочей функции, объявлена с атрибутом ThreadStaticAttribute
 
 (4) переменная объявлена внутри класса, содержащего рабочую функцию потока 
Номер 2
В рабочей функции потока используется переменная SomeVal
типа int.
Переменная является общей в следующих случаях:
Ответ:
 (1) переменная объявлена внутри рабочей функции потока 
 (2) переменная класса, используемого в рабочей функции, объявлена с модификатором public.
 
 (3) переменная класса, используемого в рабочей функции, объявлена с атрибутом ThreadStaticAttribute
 
 (4) переменная объявлена внутри класса, содержащего рабочую функцию потока 
Номер 3
Локальное хранилище потоков может использоваться для хранения
Ответ:
 (1) только статические поля класса, доступного в рабочей функции потока 
 (2) только значимые типы (value
types
) 
 (3) только встроенные типы 
 (4) нет правильных ответов 
Упражнение 4:
Номер 1
Вызов метода Thread.Sleep(0)
приводит к следующему:
Ответ:
 (1) текущий поток снимается с процессора, не дожидаясь завершения выделенного кванта времени 
 (2) поток продолжает выполняться без промедлений 
 (3) текущий поток блокируется на бесконечное время 
 (4) генерируется исключение 
Номер 2
Для передачи управления другому потоку, конкурирующему за ядро процессора, на котором выполняется данный поток без прекращения его работы, можно использовать:
Ответ:
 (1) Thread.Yield
 
 (2) Thread.Sleep(0)
 
 (3) Thread.Stop
 
 (4) нет средств для передачи управления без прекращения работы текущего потока 
Номер 3
Метод Thread.Yield
игнорируется в случае:
Ответ:
 (1) нет конкуренции за ядро, на котором выполняется текущий поток 
 (2) нет потоков с большим приоритетом, чем приоритет текущего потока 
 (3) приложение выполняется на одноядерном процессоре 
 (4) нет правильных ответов 
Упражнение 5:
Номер 1
В чем преимущества использования пула потоков для параллельной обработки?
Ответ:
 (1) рабочие потоки пула являются более легковесными объектами 
 (2) нет накладных расходов на создание и завершение потоков 
 (3) распределение рабочих элементов по потокам осуществляется автоматически 
 (4) пул потоков предоставляет встроенные механизмы ожидания завершения работы, механизм отмены 
Номер 2
Для ожидания завершения обработки пользовательских рабочих элементов пулом потоков можно использовать
Ответ:
 (1) ThreadPool.Wait
 
 (2) ThreadPool.WaitAll
 
 (3) Thread.Join
 
 (4) нет правильных вариантов 
Номер 3
Объект ThreadPool
позволяет:
Ответ:
 (1) автоматизировать распределение пользовательских задач по рабочим потокам пула 
 (2) получить информацию о распараллеливании выполнения пользовательских задач 
 (3) настраивать тип декомпозиции пользовательских задач 
 (4) нет правильных вариантов 
Упражнение 6:
Номер 1
Применение многопроцессного выполнения связано со следующими проблемами:
Ответ:
 (1) гонка данных  
 (2) взаимодействие процессов с помощью специальных средств 
 (3) сбой одного процесса приводит к сбою всех процессов 
 (4) накладные расходы, связанные с переключением контекста разных процессов 
Номер 2
Преимущества использования многопоточности для параллельных вычислений по сравнению с применением многопроцессности связаны:
Ответ:
 (1) потоки работают в едином адресном пространстве 
 (2) переключение потоков одного процесса занимает меньшее время по сравнению с переключением потоков разных процессов 
 (3) для взаимодействия потоков не требуется применения средств синхронизации 
 (4) сбой в одном потоке не приводит к сбою приложения 
Номер 3
Применение многопоточности для параллельных вычислений связано со следующими недостатками:
Ответ:
 (1) для взаимодействия потоков требуется применение специальных средств обмена сообщениями 
 (2) для согласования поведения потоков необходимо применение средств синхронизации 
 (3) сбой в одном потоке приводит к сбою приложения 
 (4) многопоточное выполнение приложения связано с накладными расходами, превышающими расходы при многопроцессном выполнении