Главная / Программирование /
Параллельное программирование с помощью языка 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) многопоточное выполнение приложения связано с накладными расходами, превышающими расходы при многопроцессном выполнении