Главная / Программирование /
Параллельные вычисления и многопоточное программирование / Тест 4
Параллельные вычисления и многопоточное программирование - тест 4
Упражнение 1:
Номер 1
Сколько классов содержится в пространстве имен Threading
?
Ответ:
 (1) 2 
 (2) 4 
 (3) не более 10 
 (4) более 40 
Номер 2
Сколько конструкторов у класса Thread
?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 4 
Номер 3
Что можно передать в качестве фактического аргумента конструктору класса Thread
с одним аргументом?
Ответ:
 (1) объект класса Thread
 
 (2) метод, сигнатура которого задана конструктором 
 (3) метод с произвольной сигнатурой 
 (4) анонимный метод 
 (5) объект, вызывающий метод с фиксированной сигнатурой 
Упражнение 2:
Номер 1
В момент создания объекта класса Thread
конструктору класса передается метод. Что можно сказать о сигнатуре этого метода?
Ответ:
 (1) метод может иметь произвольную сигнатуру 
 (2) метод может быть процедурой без аргументов 
 (3) метод может быть процедурой с одним аргументом типа object
 
 (4) метод может быть процедурой с одним аргументом произвольного типа 
Номер 2
В момент создания потока ему нужно передать:
Ответ:
 (1) проект, который будет выполняться в потоке 
 (2) класс, методы которого будут исполняться в потоке 
 (3) метод, который будет выполняться в потоке 
 (4) объект, который будет выполняться в потоке 
Номер 3
Программисту необходимо, чтобы в потоке выполнялся метод, имеющий три аргумента. Конструктору потока передать такой метод невозможно. Какие решения позволяют справиться с возникшей ситуацией?
Ответ:
 (1) следует признать, что задача неразрешима 
 (2) передать конструктору анонимный метод, не имеющий аргументов. В теле анонимного метода разрешается вызывать метод с тремя аргументами 
 (3) передать конструктору объект, вызывающий метод с тремя аргументами 
 (4) ввести структуру, поля которой описывают аргументы метода, и преобразовать исходный метод в метод с одним аргументом, тип которой задается введенной структурой 
Упражнение 3:
Номер 1
При выполнении программы был создан поток thread_one
. Что происходит в результате выполнения оператора thread_one.Start;
?
Ответ:
 (1) операционная система создает новый поток 
 (2) поток переходит в состояние "Выполнение" 
 (3) поток переходит в состояние "Создание" 
 (4) поток переходит из состояния "Создание" в состояние "Готовность" 
Номер 2
При выполнении программы встретилось корректное объявление: Thread thread_one = new Thread(My_method);
Что происходит в результате объявления?
Ответ:
 (1) операционная система создает новый поток 
 (2) поток запускается на выполнение 
 (3) создается логический объект, связанный с физическим объектом, задающим поток 
 (4) физический поток переходит в состояние "создание" 
Номер 3
При выполнении программы встретилось объявление: Thread thread_one;
Что происходит в результате объявления?
Ответ:
 (1) операционная система создает новый поток 
 (2) создается логический объект, описывающий поток 
 (3) создается ссылка на логический объект, задающий поток. Сам поток в этот момент не создается 
Упражнение 4:
Номер 1
Какие методы есть в классе Thread
, позволяющие потоку приостановить выполнение:
Ответ:
 (1) Break
 
 (2) Sleep
 
 (3) Join
 
 (4) Stop
 
Номер 2
Какие методы есть в классе Thread
, позволяющие потоку прервать выполнение дочерних потоков:
Ответ:
 (1) Interrupt
 
 (2) Sleep
 
 (3) Join
 
 (4) Abort
 
Номер 3
Какими свойствами обладают объекты класса Thread
?
Ответ:
 (1) Name
 
 (2) Join
 
 (3) Priority
 
 (4) Parent
 
Упражнение 5:
Номер 1
Что происходит с потоком, когда вызывается метод Abort
для прерывания работы потока?
Ответ:
 (1) поток немедленно завершает работу, независимо от состояния, в котором он находится. Управление возвращается родительскому потоку, вызвавшему метод Abort
 
 (2) поток "зажигает" исключение ThreadAbortException
и завершает работу, независимо от состояния, в котором он находится. Обработчик исключительной ситуации может быть предусмотрен или может отсутствовать 
 (3) если поток находится в состоянии "ожидания" или в некоторый момент выполнения перейдет в это состояние, то в этом состоянии "зажигается" исключение ThreadAbortException
. Вызов Abort
предполагает, что обработчик этой ситуации предусмотрен 
 (4) если задан обработчик исключительной ситуации ThreadAbortException
, то в нем можно отменить удаление потока и продолжить его выполнение 
Номер 2
Что происходит с потоком, когда вызывается метод Interrupt
для прерывания работы потока?
Ответ:
 (1) поток немедленно завершает работу, независимо от состояния, в котором он находится. Управление возвращается родительскому потоку, вызвавшему метод Interrupt
 
 (2) поток "зажигает" исключение и завершает работу, независимо от состояния, в котором он находится 
 (3) если поток находится в состоянии "ожидания" или в некоторый момент выполнения перейдет в это состояние, то в этом состоянии "зажигается" исключение ThreadInterruptedException
. Вызов Interrupt
предполагает, что обработчик этой ситуации предусмотрен 
 (4) если в момент вызова метода Interrupt
поток находится в состоянии "выполнения" и в этом состоянии успешно завершает выполнение метода, то вызов Interrupt не оказывает никакого действия 
Номер 3
Что происходит, когда поток завершает выполнение метода?
Ответ:
 (1) поток начинает выполнять новый метод 
 (2) поток повторно начинает выполнять переданный ему метод 
 (3) поток завершает работу и удаляется из списка потоков 
 (4) поток ожидает повторного запуска методом Start
 
Упражнение 6:
Номер 1
Укажите высказывания, истинные для параллельного алгоритма вычисления определенного интеграла:
Ответ:
 (1) в параллельном алгоритме можно создать массив потоков, число элементов которого определяется числом отрезков разбиения интервала интегрирования 
 (2) все потоки выполняют один и тот же метод, применяемый на своем интервале интегрирования 
 (3) все потоки выполняют разные методы 
 (4) всем методам передается один и тот же фактический аргумент 
 (5) каждому методу передается свое значение фактического аргумента 
Номер 2
В параллельном алгоритме пузырьковой сортировки элементы массива потоков создаются при выполнении следующего оператора: threads[i] = new Thread(sorts[i].BubbleSortPart);
. Какие утверждения являются справедливыми?
Ответ:
 (1) все потоки выполняют метод BubbleSortPart
 
 (2) методу BubbleSortPart
в методе Start
всегда необходимо передать один или несколько фактических аргументов 
 (3) методу BubbleSortPart
можно не передавать фактических аргументов 
 (4) каждый метод, работающий в потоке, получает необходимую информацию от объекта sorts[i]
 
Номер 3
Параллельные версии алгоритмов пузырьковой сортировки и быстрой сортировки, представленные в этой главе, реализованы по-разному. Какие утверждения являются истинными?
Ответ:
 (1) в пузырьковой сортировке потоку передается объект, вызывающий метод без аргументов. Вся необходимая методу информация содержится в полях объекта 
 (2) в быстрой сортировке методу потока передается метод, который получает фактический аргумент в момент вызова метода Start
. Вся необходимая методу информация содержится в фактическом аргументе 
 (3) реализация пузырьковой сортировки могла быть схожа с реализацией быстрой сортировки 
 (4) реализация быстрой сортировки могла быть схожа с реализацией пузырьковой сортировки 
 (5) метод, выполняемый в быстрой сортировке, является рекурсивным и потому обязан иметь аргумент