Главная / Программирование / Параллельные вычисления и многопоточное программирование

Параллельные вычисления и многопоточное программирование - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: Данный учебный курс представляет введение в параллельное и многопоточное программирование. Он знакомит читателя с общими свойствами параллельных вычислений, моделью параллельных вычислений и ее характеристиками.
Смотрите также:
Под параллельными вычислениями в данном курсе понимается параллельное выполнение:
(1) одной и той же программы
(2) разных программ на одном компьютере
(3) разных программ на разных компьютерах
(4) одной программы в разных сеансах выполнения
Операционная система создает процесс для каждого:
(1) класса проекта
(2) проекта, входящего в решение
(3) решения (solution)
(4) исполняемого метода
Что понимается под чисткой цикла?
(1) из тела цикла удаляются все операторы за исключением операторов присваивания
(2) чистка выражений – все выражения и подвыражения, значения которых не зависят от параметров цикла, выносятся в инициализирующую часть цикла. В теле цикла они заменяются соответствующими локальными переменными
(3) чистка операторов цикла – в инициализирующую часть выносятся все операторы тела цикла, перенос которых сохраняет семантику исходного цикла
(4) чистка структуры цикла
(5) удаление раскраски переменных тела цикла
Сколько классов содержится в пространстве имен Threading?
(1) 2
(2) 4
(3) не более 10
(4) более 40
Что понимается под гонкой данных (гонкой условий):
(1) чистка файлов от данных
(2) упрощение условий в if-операторах
(3) параллельное использование в потоках общих ресурсов
(4) замена литеральных констант именованными константами
Что такое пул потоков?
(1) массив потоков, создаваемых программистом
(2) множество потоков, созданное и управляемое операционной системой
(3) список потоков, поставленных в очередь на выполнение
При распараллеливании цикла:
(1) все итерации выполняются одновременно
(2) итерации выполняются последовательно, но в произвольном порядке
(3) некоторые итерации выполняются параллельно в произвольном порядке
(4) число параллельно выполняемых итераций зависит от числа свободных процессоров
(5) некоторые итерации выполняются параллельно, но порядок фиксирован – итерации с меньшими номерами выполняются раньше, чем итерации с большими номерами
Какие утверждения справедливы относительно понятия интерфейс?
(1) многозначное понятие, имеющее разный смысл в зависимости от контекста
(2) в контексте данной главы под интерфейсом понимается класс, задаваемый ключевым словом interface, определяющий абстрактные методы, которые должны быть реализованы наследниками интерфейсного класса
(3) в контексте данной главы под интерфейсом понимается часть приложения, обеспечивающая взаимодействие конечного пользователя с приложением и отвечающая за представление исходных данных и результатов
Если полагать, что единственным общим ресурсом является оперативная память, то какие проблемы характерны для параллельных вычислений, выполняемых на системах с распределенной памятью (кластеров):
(1) гонка данных (DataRace)
(2) распределить – собрать (Map – Reduce)
(3) синхронизация
(4) клинч
(5) блокировка
Потоки ОС:
(1) выполняют код программных проектов
(2) являются владельцами ресурсов, предоставляемых ОС проекту
(3) обладают памятью, общей для всех потоков, связанных с процессом
(4) являются владельцами процесса, позволяющего выполнять код
Цикл не допускает распараллеливания, если:
(1) в теле цикла есть оператор, присваивающий значение переменной x, которая используется при вычислении выражения, задающего новое значение переменной x
(2) множества переменных, изменяемых на итерациях цикла, взаимно не пересекаются
(3) множества переменных, изменяемых на итерациях цикла, взаимно пересекаются
(4) итерации цикла независимы
В момент создания объекта класса Thread конструктору класса передается метод. Что можно сказать о сигнатуре этого метода?
(1) метод может иметь произвольную сигнатуру
(2) метод может быть процедурой без аргументов
(3) метод может быть процедурой с одним аргументом типа object
(4) метод может быть процедурой с одним аргументом произвольного типа
Какие утверждения справедливы по отношению к критическим секциям:
(1) у метода может быть только одна критическая секция
(2) разные потоки могут входить в одну и ту же критическую секцию
(3) разные потоки могут входить в разные критические секции, закрываемые одним и тем же ключом
Укажите высказывания, истинные при работе с пулом потоков:
(1) когда очередь задач не пуста, а в пуле потоков есть свободные потоки, то операционная система связывает задачу, стоящую первой в очереди, со свободным потоком, после чего поток переходит в состояние "готовность"
(2) когда поток завершает выполнение задачи, он удаляется из пула потоков
(3) метод Join позволяет дождаться завершения задачи, выполняемой потоком из пула потоков
Какой из операторов может встречаться только в итерации обычного цикла for, но не Parallel.For?
(1) Continue
(2) Break
(3) Stop
Работа с какими классами ведется в интерфейсной части приложения?
(1) Console
(2) Polinom
(3) Form
(4) Person
Укажите корректную формулу, связывающую эффективность и ускорение:
(1) math
(2) math
(3) math
(4) math
Какие переходы из одного состояния в другое невозможны для потоков?
(1) готовность -> ожидание
(2) завершение -> готовность
(3) готовность -> завершение
(4) выполнение -> готовность
(5) создание -> выполнение
Укажите истинные высказывания, связанные с вычислением суммы элементов массива:
(1) для однопроцессорного компьютера последовательный алгоритм является наиболее эффективным
(2) для любого компьютера пирамидальный алгоритм является наиболее эффективным
(3) эффективность пирамидального алгоритма зависит от архитектуры компьютера и применяемых средств распараллеливания
(4) выбор наиболее эффективного алгоритма зависит от архитектуры компьютера
При выполнении программы был создан поток thread_one. Что происходит в результате выполнения оператора thread_one.Start;?
(1) операционная система создает новый поток
(2) поток переходит в состояние "Выполнение"
(3) поток переходит в состояние "Создание"
(4) поток переходит из состояния "Создание" в состояние "Готовность"
Каково назначение оператора lock?
(1) закрыть общий ресурс потоков для чтения
(2) закрыть общий ресурс потоков для записи
(3) закрыть критическую секцию, позволяя работать в ней только одному потоку
Как связать метод, определяющий задачу, с потоком из пула?
(1) конструктору класса ThreadPool передать метод в качестве аргумента
(2) конструктору класса Thread передать метод в качестве аргумента
(3) вызвать статический метод QueueUserWorkItem класса ThreadPool и передать ему метод в качестве аргумента
(4) вызвать статический метод Start класса ThreadPool и передать ему метод в качестве аргумента
Какие методы есть у класса Parallel?
(1) For
(2) ForEach
(3) While
Под наблюдаемыми параметрами понимаются:
(1) параметры пользователя
(2) параметры, изменяемые пользователем в интерфейсе приложения с целью воздействия на процесс работы бизнес-логики
(3) параметры, представляющие конечные результаты работы приложения
(4) параметры, отображаемые в интерфейсе приложения, значения которых изменяются в процессе работы бизнес-логики. Анализ наблюдаемых параметров позволяет пользователю воздействовать на процесс работы бизнес-логики
Если полагать, что единственным общим ресурсом является оперативная память, то какие проблемы параллельных вычислений не связаны с блокировкой:
(1) распределить – собрать (Map – Reduce)
(2) гонка данных (Data Race)
(3) клинч (Deadlock)
(4) синхронизация
Укажите истинные высказывания, связанные с управлением памятью:
(1) каждому процессу ОС выделяет свой участок оперативной памяти
(2) каждому процессу ОС выделяет виртуальную память одинакового объема
(3) каждому процессу ОС выделяет виртуальную память, объем которой зависит от приоритета процесса
Последовательный алгоритм умножения матриц C = A * B содержит три цикла – цикл по строкам матрицы A, по столбцам матрицы В, внутренний цикл, вычисляющий скалярное произведение строки на столбец. У каких циклов итерации независимы?
(1) только у цикла по строкам
(2) только у цикла по столбцам
(3) как у цикла по строкам, так и у цикла по столбцам
(4) у всех трех циклов
Какие методы есть в классе Thread, позволяющие потоку приостановить выполнение:
(1) Break
(2) Sleep
(3) Join
(4) Stop
Какие утверждения справедливы для ситуации клинча?
(1) клинч не может возникнуть, если у потоков есть только один общий ресурс
(2) клинч не может возникнуть, если все потоки выполняют один и тот же метод
(3) для возникновения клинча необходимо выполнить оператор clinch
Какие утверждения являются истинными по отношению к пулу потоков?
(1) пул потоков создается операционной системой и используется для улучшения возможностей ОС по управлению потоками. В программах на C# нет возможности непосредственного обращения к пулу потоков
(2) пул потоков создается операционной системой исключительно для выполнения методов пользователя. Операционная система не использует пул потоков в собственных интересах
(3) потоки из пула потоков могут выполнять задачи, создаваемые самой операционной системой, так и задачи, поставленные в очередь, при выполнении программ пользователей
Отметьте высказывания, истинные по отношению к методу, реализующему тело цикла Parallel.For:
(1) метод может не иметь параметров
(2) метод может иметь один параметр типа int, задающий номер выполняемой итерации
(3) метод может иметь два параметра, - номер выполняемой итерации и параметр типа ParallelLoopState, позволяющий управлять состоянием итерации
(4) метод может иметь два параметра, - номер выполняемой итерации и параметр типа ParallelLoopResult, позволяющий управлять состоянием итерации
Для того, чтобы корректно работать с элементами управления, созданными в другом потоке, можно использовать следующие методы:
(1) Invoke
(2) Thread
(3) AnotherThread
(4) BeginInvoke и EndInvoke
Графические процессоры согласно классификации Флинна относятся к классу:
(1) SISD
(2) SIMD
(3) MISD
(4) MIMD
Какая информация содержится в контексте потока?
(1) только имя процесса и имя потока
(2) вся информация, необходимая для возобновления прерванного выполнения потока
(3) информация о соседних потоках
Какие утверждения справедливы для алгоритма пузырьковой сортировки?
(1) является эффективным по сложности алгоритмом сортировки массивов
(2) на массивах малой размерности может работать быстрее алгоритма быстрой сортировки
(3) существует вариация алгоритма со сложностью O(N) для лучшего случая упорядоченности
(4) в классическом варианте имеет сложность O(N * N) во всех случаях
Что происходит с потоком, когда вызывается метод Abort для прерывания работы потока?
(1) поток немедленно завершает работу, независимо от состояния, в котором он находится. Управление возвращается родительскому потоку, вызвавшему метод Abort
(2) поток "зажигает" исключение ThreadAbortException и завершает работу, независимо от состояния, в котором он находится. Обработчик исключительной ситуации может быть предусмотрен или может отсутствовать
(3) если поток находится в состоянии "ожидания" или в некоторый момент выполнения перейдет в это состояние, то в этом состоянии "зажигается" исключение ThreadAbortException. Вызов Abort предполагает, что обработчик этой ситуации предусмотрен
(4) если задан обработчик исключительной ситуации ThreadAbortException, то в нем можно отменить удаление потока и продолжить его выполнение
Укажите высказывания, истинные для класса ReaderWriterLockSlim:
(1) методы блокировки TryEnter позволяют избежать ситуации клинча
(2) если при выполнении метода EnterReadLock() есть очередь потоков со статусом Write, то поток становится в конец этой очереди. Если же очереди нет, то поток дожидается завершения работы потоков, находящихся в критической секции. После чего поток входит в критическую секцию и единолично работает с ресурсом;
(3) методы блокировки класса ReaderWriterLockSlim позволяют обеспечить мягкую блокировку ресурсов
TPL (Task Parallel Library) – библиотека параллельных задач – это библиотека:
(1) содержащая классические алгоритмы, допускающие распараллеливание
(2) впервые появившаяся в версии Framework.Net 4.0, облегчающая создание программ с параллельными вычислениями
(3) содержащая классы Task, Parallel и многие другие классы, позволяющие абстрагироваться от непосредственного создания и работы с потоками
Как узнать при выполнении Parallel.For номер минимальной итерации, на которой происходит прерывание цикла, инициируемое выполнением оператора (метода) Break?
(1) узнать невозможно, поскольку итерации запускаются в произвольном порядке, так что впервые Break может выполняться на итерации с большим номером
(2) необходимо метод, задающий тело цикла, описать как метод с двумя параметрами, что позволит вызвать метод STOP, прерывающий выполнение итерации
(3) следует вызвать метод Break как функцию, возвращающую в качестве результата номер минимальной итерации
(4) метод Parallel.For следует вызывать как функцию, что позволит, используя свойство LowestBreakIteration возвращаемого значения, определить номер минимальной итерации, на которой произошло прерывание
Какие утверждения справедливы относительно метода Invoke, вызываемого при работе с элементами управления?
(1) это статический метод
(2) это динамический метод, которым обладают все элементы управления, наследуя его от класса Control
(3) метод Invoke вызывается в потоках, когда необходимо работать с элементами управления, созданными в других потоках
Укажите истинные высказывания:
(1) время math всегда больше времени math
(2) время math всегда больше времени math
(3) на некоторых задачах все три временные характеристики math, math, math могут совпадать
(4) на любых задачах увеличение числа процессоров приводит к ускорению процесса вычислений
(5) справедливо соотношение math
Укажите истинные высказывания:
(1) потоки, выполняемые параллельно, всегда выполняют один и тот же код, но с разными данными
(2) потоки, выполняемые параллельно, всегда выполняют разный код, но с одними и теми же данными
(3) потоки, выполняемые параллельно, могут выполнять один и тот же код с разными данными
(4) потоки, выполняемые параллельно, могут выполнять разный код, как с одними и теми же, так и с разными данными
Сложность шагового алгоритма пузырьковой сортировки задается формулой math. Справедливость каких утверждений следует из этого?
(1) алгоритм эффективнее классического алгоритма пузырьковой сортировки при p, близком к 1
(2) алгоритм эффективнее классического алгоритма пузырьковой сортировки при p, близком к n
(3) существует оптимальное значение p, при котором алгоритм показывает наилучшее быстродействие
Укажите высказывания, истинные для параллельного алгоритма вычисления определенного интеграла:
(1) в параллельном алгоритме можно создать массив потоков, число элементов которого определяется числом отрезков разбиения интервала интегрирования
(2) все потоки выполняют один и тот же метод, применяемый на своем интервале интегрирования
(3) все потоки выполняют разные методы
(4) всем методам передается один и тот же фактический аргумент
(5) каждому методу передается свое значение фактического аргумента
Какие утверждения справедливы по отношению к классу Monitor?
(1) методы этого класса позволяют наблюдать за поведением потоков (выполняют непрерывный мониторинг), что позволяет управлять вычислениями в критических секциях
(2) оператор lock языка C# реализован с использованием механизмов класса Monitor
(3) метод TryEnter класса Monitor позволяет справиться с ситуацией клинча
Каково назначение метода ContinueWith класса Task?
(1) такого метода у класса нет
(2) позволяет организовать цепочку выполнения задач, когда следующая задача начинает выполняться после завершения предыдущей задачи
(3) позволяет синхронно выполнять несколько задач
Какие из следующих высказываний справедливы по отношению к распараллеливанию цикла while:
(1) для распараллеливания цикла следует применить метод Parallel.While
(2) точную семантику цикла while при распараллеливании в общем случае сохранить не удается
(3) на практике цикл while почти всегда можно промоделировать циклом Parallel.For, введя дополнительное ограничение на максимально возможное число итераций
Приложение представляет модель взаимодействия управляющего и управляемого процессов. Это взаимодействие может быть основано на механизме:
(1) взаимных ссылок
(2) взаимных упреков
(3) cобытий
Если задан граф зависимостей, то время выполнения критического пути задает:
(1) math
(2) math
(3) math
(4) math
Какие утверждения справедливы для классической задачи "Обедающие философы"?
(1) эта задача позволяет моделировать ситуацию, в которой использование общих ресурсов может приводить к возникновению клинча
(2) для решения проблемы клинча достаточно описать общие ресурсы как объекты класса SemaphoreSlim
(3) для решения проблемы клинча необходимо ввести ограничения на порядок использования ресурсов
Укажите истинные высказывания:
(1) метод Wait класса Task позволяет ждать завершения задачи в течение заданного интервала времени
(2) метод WaitAll класса Task позволяет ждать завершения массива задач
(3) методы Wait класса Task позволяют организовать взаимную блокировку задач
Какие утверждения справедливы по отношению исключений, выбрасываемых на итерациях циклов Parallel.For и Parallel.ForEach:
(1) какой бы тип исключений не возникал на итерациях цикла, независимо от числа возникших исключений в результате выбрасывается одно агрегированное исключение AggregateException
(2) информация о всех возникших исключениях теряется и не может быть обработана
(3) информация о всех возникших исключениях сохраняется и может быть проанализирована и обработана в обработчике исключения AggregateException
Что такое мультипрограммный режим работы?
(1) параллельное выполнение одной программы
(2) выполнение приложений мультимедиа
(3) параллельное выполнение разных программ
(4) параллельная разработка нескольких программ
Укажите высказывания, истинные для процессов ОС:
(1) процесс создается динамически, в тот момент, когда начинает выполняться программный код проекта
(2) процесс уничтожается, когда код проекта перестает выполняться
(3) ОС создает большое число служебных процессов
(4) процессы создаются только для проектов, подготовленных программистами
(5) некоторые процессы постоянно присутствуют во время работы ОС
Цикл может допускать распараллеливание, если:
(1) в теле цикла есть оператор, присваивающий значение переменной x, которая используется при вычислении выражения, задающего новое значение переменной x
(2) все переменные, вычисляемые в теле цикла, зависят от параметра цикла i
(3) итерации цикла зависимы
Сколько конструкторов у класса Thread?
(1) 1
(2) 2
(3) 3
(4) 4
Что понимается под общими ресурсами потоков, участвующими в гонке:
(1) методы, передаваемые потокам
(2) общие переменные (оперативная память)
(3) файлы
(4) устройства – консоль, принтер
Класс ThreadingPool - это:
(1) статический класс
(2) динамический класс
(3) класс, создаваемый программистом
(4) библиотечный класс из пространства имен System.Threading
Что происходит при замене обычного цикла for на его аналог Parallel.For?
(1) возникает исключительная ситуация, если итерации цикла являются зависимыми
(2) цикл будет выполняться и в случае зависимых итераций, но результаты вычислений всегда будут неверными
(3) цикл будет выполняться и в случае зависимых итераций, но результаты вычислений могут быть верными, а могут быть неверными
Что понимается под понятием "бизнес-логика" в данном контексте?
(1) логика бизнесмена
(2) специальный раздел математической логики
(3) часть приложения, описывающая содержательное решение задачи, абстрагированное от формы задания исходных данных, способа их ввода, формы представления результатов приложения
Какое соотношение имеет место для временных характеристик?
(1) math
(2) math
(3) math
(4) math
Укажите высказывания, истинные для потоков:
(1) в момент создания процесса всегда создается один поток
(2) в ходе выполнения программного кода могут создаваться новые потоки, связанные с проектом (процессом)
(3) только один поток может выполнять программный код
(4) различные фрагменты кода одного проекта могут выполняться параллельно в разных потоках
Рассмотрим цикл for(int i =0; i <N; i++ ) { x = F(…); } с одним оператором присваивания в теле цикла. Какие утверждения являются справедливыми в зависимости от вида функции F?
(1) F(i, x) => Цикл может быть распараллелен
(2) F(i) => Возможна чистка цикла с избавлением от цикла
(3) F(x) => Цикл не может быть распараллелен
(4) F(i, i + 1) => Избавление от цикла невозможно
В момент создания потока ему нужно передать:
(1) проект, который будет выполняться в потоке
(2) класс, методы которого будут исполняться в потоке
(3) метод, который будет выполняться в потоке
(4) объект, который будет выполняться в потоке
Какие утверждения справедливы по отношению к критической секции?
(1) критическая секция – это фрагмент метода, размеры которого превосходят допустимый размер
(2) раздел класса, в котором объявляются общие ресурсы
(3) фрагмент метода, в котором выполняется работа с общими ресурсами
Что не может делать программист при работе с пулом потоков?
(1) создать пул потоков
(2) удалить пул потоков
(3) добавить поток в пул потоков
(4) поставить задачу в очередь на выполнение ее одним из потоков пула
(5) удалить задачу из очереди на выполнение
Каких методов нет у класса Parallel?
(1) Invoke
(2) ForEach
(3) Wait
(4) Task
При разработке бизнес-логики приложения какой тип проекта, скорее всего, следует предпочесть?
(1) консольное приложение
(2) приложение Windows.Forms
(3) приложение WPF
(4) библиотека классов DLL
Что такое суперкомпьютер?
(1) персональный компьютер, пользователь которого характеризует его как "супер"
(2) компьютер с максимальными характеристиками производительности на данный момент, в его состав могут входить сотни тысяч процессоров
(3) компьютер будущего. Его создание только планируется
(4) четырехядерный 64-х битный компьютер
По какой причине поток может перейти в состояние "ожидания":
(1) выполнение прервано потоком с большим приоритетом
(2) поток решил "заснуть" на некоторое время
(3) истек отведенный потоку квант времени
(4) поток завершил выполнение кода
Укажите истинные высказывания, связанные с вычислением суммы сходящегося ряда:
(1) при использовании рекуррентных соотношений последовательный алгоритм может быть эффективнее параллельного алгоритма даже на компьютере со сколь угодно большим числом процессоров
(2) при использовании рекуррентных соотношений последовательный алгоритм всегда эффективнее параллельного алгоритма
(3) несмотря на использование рекуррентных соотношений, последовательный алгоритм может быть менее эффективным, чем параллельный алгоритм
(4) оптимальное быстродействие параллельного алгоритма может достигаться при использовании конечного числа используемых процессоров
При выполнении программы встретилось корректное объявление: Thread thread_one = new Thread(My_method); Что происходит в результате объявления?
(1) операционная система создает новый поток
(2) поток запускается на выполнение
(3) создается логический объект, связанный с физическим объектом, задающим поток
(4) физический поток переходит в состояние "создание"
Критическая секция может быть закрыта оператором lock(Locker), где объект Locker играет роль замка на входе в секцию. Каковы утверждения справедливы для объекта Locker?
(1) у каждой критической секции должен быть свой замок (свой объект Locker)
(2) если две критические секции закрыты одним замком, то потокам, желающим войти в эти секции, доступ открыт
(3) если критические секции закрыты одним замком, то потокам, желающим войти в эти секции, доступ закрыт, если некоторый другой поток уже работает в критической секции, закрытой этим же замком. Ключ от замка может быть только у одного потока
Какие утверждения справедливы относительно метода QueueUserWorkItem?
(1) метод позволяет поставить задачу в очередь на выполнение пулом потоков
(2) это статический метод
(3) это динамический метод
(4) метод реализован как функция
(5) метод реализован как процедура
(6) у метода две реализации
Каких методов нет у класса Parallel?
(1) Invoke
(2) ForEach
(3) Wait
(4) Task
Под управляемыми параметрами понимаются:
(1) параметры пользователя
(2) параметры, задаваемые пользователем в интерфейсе приложения с целью воздействия на процесс работы бизнес-логики
(3) параметры, представляющие конечные результаты работы приложения
(4) параметры, отображаемые в интерфейсе приложения, значения которых изменяются в процессе работы бизнес-логики
Сколько классов компьютеров в классификации Флинна:
(1) 2
(2) 4
(3) 8
(4) 16
Укажите истинные высказывания, связанные с управлением памятью:
(1) виртуальное адресное пространство делится между служебными процессами ОС и пользовательскими процессами
(2) страницы виртуальной памяти отображаются на страницы оперативной памяти
(3) страницы виртуальной памяти, отводимые разным процессам, могут отображаться на одни и те же страницы оперативной памяти
(4) размер виртуальной памяти для компьютеров с 32-х битной и 64-х битной архитектурой один и тот же
Какой сложности в идеале можно добиться на суперкомпьютере для задачи умножения квадратных матриц размерности N * N?
(1) math
(2) math
(3) math
(4) O(logN)
(5) O(1)
Какие методы есть в классе Thread, позволяющие потоку прервать выполнение дочерних потоков:
(1) Interrupt
(2) Sleep
(3) Join
(4) Abort
Клинч возникает, если:
(1) несколько потоков пытаются параллельно выполнить один и тот же метод
(2) несколько потоков взаимно блокируют общие ресурсы, необходимые каждому из потоков для продолжения работы
(3) несколько потоков используют общие ресурсы
Укажите достоинства работы с пулом потоков:
(1) повышается эффективность использования потоков
(2) повышается эффективность работы метода, передаваемого потоку
(3) облегчается синхронизация потоков
(4) исчезает необходимость собственного создания потоков
Метод For класса Parallel является:
(1) статическим
(2) динамическим
(3) функцией
(4) процедурой
Что происходит, когда в многопоточном приложении один поток пытается непосредственно обращаться к элементам управления визуального интерфейса, созданным в другом потоке?
(1) приложение будет работать, но запись и чтение в элементы управления производиться не будет
(2) приложение будет работать, запись и чтение в элементы управления будет корректно работать
(3) при работе приложения в отладочном режиме (F5) будет выбрасываться исключение в момент обращения к элементам управления другого потока
(4) при работе приложения в режиме запуска без отладки (Ctrl + F5) в момент обращения к элементам управления другого потока исключение не выбрасывается, но результаты могут быть неверными из-за возможной гонки данных
Из закона Амдаля следует:
(1) для любой задачи можно добиться сколь угодно высокого ускорения за счет увеличения числа используемых процессоров
(2) для любой задачи за счет увеличения числа используемых процессоров можно добиться более чем 10-кратного ускорения
(3) для некоторой задачи за счет увеличения числа используемых процессоров нельзя добиться 10-кратного ускорения
(4) для любой задачи ускорение ограничено величиной, зависящей от доли последовательных вычислений, не подлежащих распараллеливанию
Укажите истинные высказывания:
(1) несколько процессов могут использовать один и тот же программный код в оперативной памяти
(2) при параллельных вычислениях порядок выполнения модулей может не соответствовать порядку, указанному в тексте программы
(3) последовательный алгоритм вычисления суммы элементов массива обеспечивает наилучшее быстродействие
Какие утверждения справедливы для шагового алгоритма пузырьковой сортировки?
(1) допускает распараллеливание
(2) при последовательном выполнении на больших массивах работает эффективнее классического варианта
(3) проще в реализации
Что происходит с потоком, когда вызывается метод Interrupt для прерывания работы потока?
(1) поток немедленно завершает работу, независимо от состояния, в котором он находится. Управление возвращается родительскому потоку, вызвавшему метод Interrupt
(2) поток "зажигает" исключение и завершает работу, независимо от состояния, в котором он находится
(3) если поток находится в состоянии "ожидания" или в некоторый момент выполнения перейдет в это состояние, то в этом состоянии "зажигается" исключение ThreadInterruptedException. Вызов Interrupt предполагает, что обработчик этой ситуации предусмотрен
(4) если в момент вызова метода Interrupt поток находится в состоянии "выполнения" и в этом состоянии успешно завершает выполнение метода, то вызов Interrupt не оказывает никакого действия
Сколько методов, включающих блокировку, имеется у класса ReaderWriterLockSlim?
(1) 1
(2) 2
(3) 3
(4) 6
Какие утверждения справедливы относительно классов Task и Task<TResult>:
(1) класс Task является статическим классом, а класс Task<TResult> - динамическим классом, позволяющим создавать экземпляры класса
(2) методы, передаваемые объектам класса Task, являются процедурами, а классу Task<TResult> передаются функции
(3) класс Task<TResult> является наследником класса Task
(4) конструктор класса Task<TResult> имеет один параметр типа TResult
Какие утверждения правильно описывают семантику выполнения метода Parallel.For:
(1) при запуске на выполнение метода Parallel.For параллельно начинают выполняться некоторые итерации, число которых зависит от числа доступных процессоров, и номера которых могут быть произвольными
(2) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций прерывается и метод Parallel.For завершает свою работу
(3) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций продолжается. После завершения всех запущенных итераций метод Parallel.For завершает свою работу
(4) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций продолжается. Всегда запускаются все итерации с номерами, меньшими минимального номера итерации, на которой произошло прерывание
Какие утверждения справедливы относительно метода Invoke, вызываемого при работе с элементами управления?
(1) существует единственная реализация метода, в которой при вызове метода никакие параметры ему не передаются
(2) существует единственная реализация метода, в которой при вызове метода ему передаются параметры
(3) существуют две реализации метода. В первой реализации методу Invoke передается один параметр, задающий метод для работы с элементом управления. Во второй реализации методу Invoke передаются два параметра – метод и информация, необходимая методу, представленная массивом параметров
Если задан граф зависимостей, то легко считаются следующие характеристики:
(1) math
(2) все три характеристики - math, math, math
(3) math
(4) math
(5) две характеристики - mathи math
Реентерабельный модуль это:
(1) модуль, не имеющий данных, разделяемых при параллельных вызовах
(2) любой, повторно вызываемый модуль в разных потоках
(3) повторно вызываемый модуль в одном и том же потоке
Какие утверждения справедливы для алгоритма сортировки "чет – нечет"?
(1) допускает естественное распараллеливание
(2) на каждом проходе проводится N сравнений - обменов
(3) на каждом проходе сравниваются одни и те же пары элементов
В параллельном алгоритме пузырьковой сортировки элементы массива потоков создаются при выполнении следующего оператора: threads[i] = new Thread(sorts[i].BubbleSortPart);. Какие утверждения являются справедливыми?
(1) все потоки выполняют метод BubbleSortPart
(2) методу BubbleSortPart в методе Start всегда необходимо передать один или несколько фактических аргументов
(3) методу BubbleSortPart можно не передавать фактических аргументов
(4) каждый метод, работающий в потоке, получает необходимую информацию от объекта sorts[i]
Какие высказывания являются истинными по отношению к методу Wait из класса Monitor?
(1) в кооперации с методом Pulse обеспечивает взаимодействие потоков
(2) метод освобождает синхронизирующий объект
(3) метод прерывает работу потока и ставит его в специальную очередь ожидания уведомления
(4) для возобновления работы необходимо, чтобы другой метод, захвативший освобожденный объект синхронизации, выполнил метод Pulse
(5) возобновление работы потока после вызова метода Wait происходит по истечении заданного интервала времени
Какие свойства имеет класс Task?
(1) QueueUserWorkItem
(2) Status
(3) Wait
(4) IsComleted
(5) Start
Какие высказывания справедливы по отношению к методу Parallel.Invoke?
(1) при вызове метода Parallel.Invoke ему можно передать список методов, которые могут выполняться параллельно в произвольном порядке
(2) все методы, передаваемые Parallel.Invoke, должны быть методами, определенными в одном и том же классе
(3) метод Parallel.For позволяет достаточно просто промоделировать метод Parallel.Invoke
Какие утверждения являются справедливыми в ситуации, когда управление бизнес-логикой приложения осуществляется в визуальном интерфейсе, работающем в потоке, отличном от потока, в котором работает бизнес-логика?
(1) взаимодействие управляющего и управляемого процесса в этом случае может быть построено на основе взаимных ссылок
(2) взаимодействие управляющего и управляемого процесса в этом случае может быть построено на основе механизма событий
(3) организация такого взаимодействия возможна только в случае однопоточного приложения
Укажите истинные высказывания:
(1) для мультикомпьютерных комплексов, где каждый компьютер комплекса имеет собственную память, проблемы гонки данных и клинча не столь актуальны
(2) гонка данных всегда приводит к возникновению исключительных ситуаций
(3) клинч всегда приводит к возникновению исключительных ситуаций
(4) ситуация клинча возникает из-за взаимной блокировки общих ресурсов
Какие утверждения справедливы для метода Wait класса SemaphoreSlim?
(1) по семантике этот метод совпадает с методом Wait класса Monitor
(2) является статическим методом класса SemaphoreSlim
(3) аргументом метода является синхронизирующий объект Locker
(4) если при создании семафора счетчик потоков устанавливается, равным N, то при каждом выполнении метода Wait, значение счетчика уменьшается на единицу
Укажите истинные высказывания:
(1) использование класса Task предпочтительнее использования класса Thread
(2) реализация работы с объектами класса Task основана на использовании пула потоков
(3) при распараллеливании вычислений лучшие результаты по времени выполнения достигаются при использовании объектов класса Thread в сравнении с использованием объектов класса Task
Какие высказывания истинны для цикла Parallel.ForEach:
(1) элементы коллекции доступны как для чтения, так и для записи
(2) элемент коллекции, передаваемый методу, выполняющему итерацию цикла, доступен только для чтения. При попытке записи возникает исключительная ситуация
(3) элемент коллекции, передаваемый методу, выполняющему итерацию цикла, может быть изменен, но эти изменения носят локальный характер и не отражаются на элементах самой коллекции, поскольку изменяется копия, а не сам элемент
(4) если требуется внести изменения в коллекцию, обрабатываемую в цикле, то это можно сделать, лишь создав новую коллекцию
Если полагать, что единственным общим ресурсом является оперативная память, то какие проблемы характерны для параллельных вычислений, выполняемых на системах с общей памятью:
(1) гонка данных (DataRace)
(2) распределить – собрать (Map – Reduce)
(3) синхронизация
(4) клинч
(5) блокировка
Процессы ОС:
(1) выполняют код программных проектов
(2) являются владельцами ресурсов, предоставляемых ОС проекту
(3) обладают памятью, общей для всех потоков, связанных с процессом
(4) имеют один или несколько потоков, позволяющих выполнять код
Рассмотрим цикл for(int i =0; i <N; i++ ) { x[i] = expr; } с одним оператором присваивания в теле цикла. Цикл допускает распараллеливание, если выражение expr представимо в виде:
(1) F(i, x[i])
(2) F(i)
(3) F(x[i])
(4) F(i, i + 1)
(5) F(x[i], x[i +1])
Что можно передать в качестве фактического аргумента конструктору класса Thread с одним аргументом?
(1) объект класса Thread
(2) метод, сигнатура которого задана конструктором
(3) метод с произвольной сигнатурой
(4) анонимный метод
(5) объект, вызывающий метод с фиксированной сигнатурой
При переходе от потоко - опасного класса Account к потоко - безопасному классу AccountSafe какое решение следует выбрать, следуя хорошему стилю программирования?
(1) внести изменения в класс Account
(2) создать новый класс Account_Safe, не связанный с классом Account
(3) изменить логику работы клиентов с банковским счетом
(4) создать класс Account_Safe как наследника класса Account
Объект класса ThreadingPool – это:
(1) динамический объект, создаваемый программистом всякий раз, когда необходимо работать с пулом потоков
(2) статический объект, имя которого совпадает с именем статического класса ThreadingPool, связанный с пулом потоков, созданным операционной системой
(3) объект, созданный системой автоматически и предоставляемый программисту для использования
Определить, являются ли итерации цикла независимыми, может:
(1) программист
(2) компилятор языка C#
(3) JIT компилятор
(4) некоторые оптимизирующие компиляторы
Какие утверждения справедливы по отношению к взаимодействию двух частей приложения – интерфейса и бизнес-логики?
(1) эти две части приложения должны быть полностью независимы. Интерфейс должен разрабатываться так, чтобы его можно было присоединить к любой бизнес-логике
(2) это две части приложения, не поддающиеся разделению. Каждый разрабатываемый класс приложения должен учитывать как интерфейс, так и бизнес-логику приложения
(3) эти части приложения должны разрабатываться так, чтобы связи между ними были по возможности слабыми. Большинство изменений в бизнес-логике не должно сказываться на интерфейсе, справедливо и обратное утверждение
(4) приложение с одной и той же бизнес-логикой может иметь несколько различных интерфейсов, ориентированных на различные группы пользователей приложения
Если полагать, что единственным общим ресурсом является оперативная память, то что понимается под гонкой данных?
(1) чистка памяти от данных
(2) конкурирование компьютеров за быстрейшую запись данных в память компьютера
(3) конкурирование потоков при записи данных в одно и то же слово памяти компьютера
(4) конкурирование потоков при записи данных в разные слова памяти компьютера
Отметьте высказывания, истинные для потоков и процессов:
(1) в ходе работы компьютера потоков всегда больше чем процессов
(2) в ходе работы компьютера процессов всегда больше чем потоков
(3) потоки одного процесса могут использовать общую память
(4) потоки создаются статически в момент компиляции проекта
Для вычисления суммы элементов массива можно использовать:
(1) только последовательный алгоритм
(2) только два алгоритма – последовательный или пирамидальный
(3) только четыре алгоритма – последовательный, пирамидальный, шаговый, сегментный
(4) сколь угодно много алгоритмов
Программисту необходимо, чтобы в потоке выполнялся метод, имеющий три аргумента. Конструктору потока передать такой метод невозможно. Какие решения позволяют справиться с возникшей ситуацией?
(1) следует признать, что задача неразрешима
(2) передать конструктору анонимный метод, не имеющий аргументов. В теле анонимного метода разрешается вызывать метод с тремя аргументами
(3) передать конструктору объект, вызывающий метод с тремя аргументами
(4) ввести структуру, поля которой описывают аргументы метода, и преобразовать исходный метод в метод с одним аргументом, тип которой задается введенной структурой
Работая в цикле, Поток_1 выполняет код: N = rnd.Next(0,2), а Поток_2 выполняет параллельно код: if(N > 0) Sum = 1000 else Sum = 0; (Переменные объявлены надлежащим образом, блокировки не предусмотрены) Какие результаты гарантируются?
(1) если N = 1, то Sum = 1000
(2) если N = 0, то Sum = 0
(3) если N = 0, то Sum = 1000
(4) если N = 1, то Sum = 0
(5) ни один из результатов не гарантируется. Возможны все четыре случая
Что может делать программист при работе с пулом потоков?
(1) создать пул потоков
(2) удалить пул потоков
(3) добавить поток в пул потоков
(4) поставить задачу в очередь на выполнение ее одним из потоков пула
(5) удалить поток из пула потоков
При распараллеливании цикла сложно:
(1) заменить цикл for циклом Parallel.For
(2) оценить накладные расходы
(3) выполнить балансировку нагрузки
Какие утверждения справедливы по отношению к интерфейсу, задаваемому двумя типами проектов – консольным приложением и приложением Windows.Forms:
(1) для конечного пользователя текстовый интерфейс консольного приложения предпочтительнее визуального графического интерфейса
(2) для конечного пользователя визуальный графический интерфейс предпочтительнее текстового интерфейса консольного приложения
(3) в текстовом интерфейсе консольного приложения в роли активной стороны, управляющей взаимодействием пользователя и приложения, выступает пользователь
(4) в визуальном графическом интерфейсе в роли активной стороны, управляющей взаимодействием пользователя и приложения, выступает пользователь
Что такое блокировка в параллельных вычислениях?
(1) блокирование области памяти с целью исключения возможности ее использования в параллельных процессах
(2) блокирование программы с целью исключения возможности ее использования в параллельных процессах
(3) блокирование критической секции программы с целью исключения возможности ее одновременного выполнения в параллельных процессах
(4) блокирование программы за исключением критических секций для получения возможности одновременного выполнения критических секций в нескольких параллельных процессах
Какие переходы из одного состояния в другое возможны для потоков?
(1) готовность -> ожидание
(2) ожидание -> готовность
(3) готовность -> завершение
(4) выполнение -> готовность
(5) готовность -> выполнение
Алгоритм вычисления определенного интеграла:
(1) не допускает распараллеливания
(2) допускает распараллеливание только за счет разбиения интервала интегрирования на фрагменты
(3) допускает распараллеливание только за счет распараллеливания метода прямоугольников
(4) допускает распараллеливание как за счет разбиения интервала интегрирования на фрагменты, так и за счет распараллеливания метода прямоугольников
При выполнении программы встретилось объявление: Thread thread_one; Что происходит в результате объявления?
(1) операционная система создает новый поток
(2) создается логический объект, описывающий поток
(3) создается ссылка на логический объект, задающий поток. Сам поток в этот момент не создается
Какие утверждения справедливы относительно блокировки, осуществляемой оператором lock?
(1) блокируется вход для всех потоков, пытающихся войти в критические секции, закрытые одним и тем же замком (объектом Locker), если в одной из таких секций уже выполняется поток
(2) завершая работу в критической секции, поток открывает замок, позволяя потоку, первому стоящему в очереди войти в критическую секцию, закрыв за собой замок
(3) блокируется вход только для потоков, осуществляющих запись, - изменение ресурса. Чтение ресурса разрешается всем потокам, несмотря на блокировку
Какие утверждения справедливы относительно параметров метода QueueUserWorkItem?
(1) в одной реализации у метода один параметр
(2) в другой реализации у метода два параметра
(3) первый параметр задает метод, выполняемый потоком
(4) второй параметр задает информацию, передаваемую методу, выполняемому в потоке
(5) фактический аргумент, передаваемый в качестве второго параметра, должен иметь тип object
Какой из операторов может встречаться только в итерации цикла Parallel.For, но не в обычном for?
(1) Continue
(2) Break
(3) Stop
Построение многопоточного приложения, в котором интерфейс приложения выполняется в одном потоке, а бизнес-логика – в другом, необходимо для того, чтобы:
(1) отделить разработку интерфейсной части приложения от разработки бизнес-логики
(2) получить возможность управления в интерфейсе процессом выполнения бизнес-логики, анализируя наблюдаемые параметры и задавая значения управляющих параметров
(3) ускорить работу бизнес-логики
Векторные процессоры согласно классификации Флинна относятся к классу:
(1) SISD
(2) SIMD
(3) MISD
(4) MIMD
Что называется свопингом в стратегии управления памятью операционной системой:
(1) обмен значениями двух ячеек оперативной памяти
(2) обмен программных кодов для двух процессов
(3) процесс, когда одна из занятых страниц оперативной памяти вытесняется на диск, и новая страница загружается на ее место
Сколько способов существует для параллельного вычисления числа ПИ:
(1) 0
(2) 2
(3) 4
(4) сколь угодно много
Какими свойствами обладают объекты класса Thread?
(1) Name
(2) Join
(3) Priority
(4) Parent
Как справиться с ситуацией клинча?
(1) захватывать в критической секции все общие ресурсы
(2) захватывать в критической секции только один ресурс
(3) позволять заблокированным потокам выход из режима ожидания по истечении заданного времени
(4) при блокировках клинч неизбежен, справиться с ним невозможно
Укажите недостатки работы с пулом потоков:
(1) ухудшается эффективность использования потоков
(2) ухудшается эффективность работы метода, передаваемого потоку
(3) ухудшается возможность синхронизации потоков
(4) невозможно давать собственные имена потокам из пула, что затрудняет слежение за ходом выполнения задачи
(5) возникает необходимость собственного создания потоков
Тело цикла Parallel.For:
(1) должно быть методом, соответствующим делегату Action
(2) может быть анонимным методом с соответствующей сигнатурой
(3) аналогично телу обычного цикла for может быть представлено обычным оператором языка C#
В многопоточном приложении элементы управления визуального графического интерфейса, созданные в одном потоке:
(1) являются общими ресурсами, доступными для всех потоков
(2) доступны для непосредственной записи и чтения только в том потоке, в котором они созданы
(3) доступны в других потоках только для чтения
(4) доступны в других потоках только для записи
Законы Амдаля и Густавсона-Барсиса:
(1) противоречат друг другу, - всегда выполняется только один из этих законов
(2) дополняют друг друга, - всегда выполняются оба закона
(3) описывают одно и то же явление, задавая разные его характеристики
(4) описывают разные явления, - один задает ограничение на ускорение – второй на эффективность
Потоко – безопасный модуль это:
(1) любой модуль, вызываемый в потоке
(2) модуль с разделяемыми данными, корректно работающий при параллельных вызовах
(3) модуль, корректно работающий при параллельных вызовах в тех случаях, когда нет разделяемых данных
Какой формулой задается сложность шагового алгоритма пузырьковой сортировки?
(1) math
(2) math
(3) math
(4) math
Что происходит, когда поток завершает выполнение метода?
(1) поток начинает выполнять новый метод
(2) поток повторно начинает выполнять переданный ему метод
(3) поток завершает работу и удаляется из списка потоков
(4) поток ожидает повторного запуска методом Start
Что понимается под мягкой блокировкой?
(1) блокировка критической секции с выдачей утешительных сообщений потокам, стоящим в очереди
(2) блокировка, позволяющая потокам с высоким приоритетом войти в критическую секцию
(3) блокировка, допускающая выполнение некоторых операций над общим ресурсом (например чтение ресурса) нескольким потокам. В то же время выполнение "опасных" операций (запись в ресурс) разрешается только одному потоку
Сколько конструкторов у класса Task?
(1) 1
(2) 2
(3) 4
(4) 8
Отметьте высказывания, истинные по отношению к методу Parallel.For:
(1) метод может вызываться как оператор
(2) метод может вызываться как функция
(3) значение, возвращаемое методом, имеет тип ParallelLoopState
(4) значение, возвращаемое методом, имеет тип ParallelLoopResult
Какие утверждения справедливы по отношению к методам Invoke, BeginInvoke, EndInvoke:
(1) все методы являются синхронными
(2) все методы являются асинхронными
(3) метод Invoke является синхронным – выполнение приостанавливается до завершения выполнения метода в другом потоке
(4) метод BeginInvoke является асинхронным – выполнение продолжается, не ожидая завершения выполнения метода в другом потоке
Разбиение исходной задачи на подзадачи меньшей размерности:
(1) возможно только в последовательных алгоритмах
(2) возможно только в параллельных алгоритмах
(3) возможно как в последовательных, так и в параллельных алгоритмах
(4) всегда приводит к увеличению общего времени работы
(5) всегда приводит к уменьшению общего времени работы
(6) зачастую приводит к уменьшению общего времени работы как в последовательных, так и в параллельных алгоритмах
Укажите истинные высказывания:
(1) потоки, работающие параллельно, должны выполнять разные методы
(2) потоки, работающие параллельно, могут выполнять один и тот же метод с разными данными
(3) потоки, работающие параллельно, должны выполнять один и тот же метод с разными данными
Укажите высказывания, истинные для алгоритма сортировки "чет-нечет":
(1) на четном и нечетном проходах сравниваются различные пары элементов
(2) уже после выполнения (N – 1)-го прохода массив гарантированно упорядочен
(3) на каждом проходе сравнение пар проводится независимо и допускает распараллеливание
Параллельные версии алгоритмов пузырьковой сортировки и быстрой сортировки, представленные в этой главе, реализованы по-разному. Какие утверждения являются истинными?
(1) в пузырьковой сортировке потоку передается объект, вызывающий метод без аргументов. Вся необходимая методу информация содержится в полях объекта
(2) в быстрой сортировке методу потока передается метод, который получает фактический аргумент в момент вызова метода Start. Вся необходимая методу информация содержится в фактическом аргументе
(3) реализация пузырьковой сортировки могла быть схожа с реализацией быстрой сортировки
(4) реализация быстрой сортировки могла быть схожа с реализацией пузырьковой сортировки
(5) метод, выполняемый в быстрой сортировке, является рекурсивным и потому обязан иметь аргумент
Какие высказывания являются истинными по отношению к методу Pulse(obj) из класса Monitor?
(1) в кооперации с методом Wait обеспечивает взаимодействие потоков
(2) метод освобождает синхронизирующий объект
(3) уведомляет очередь ожидания потоков с синхронизирующим объектом obj. В результате поток из этой очереди переходит в состояние готовность
(4) некорректная организация взаимодействия потоков с помощью методов Wait и Pulse может приводить к ситуации клинча
Какие методы имеет класс Task?
(1) QueueUserWorkItem
(2) ContinueWith
(3) Wait
(4) IsComleted
(5) Start
Отметьте высказывания, истинные по отношению к семантике двух методов Parallel.For и Parallel.ForEach:
(1) семантика метода Parallel.ForEach близка к семантике метода Parallel.For в той же степени, как семантика обычного for близка к семантике обычного foreach. Методу, представляющему тело цикла, передается не произвольный номер итерации, а произвольный объект из коллекции, перебираемой в цикле
(2) семантики двух методов различаются в ситуации, когда на итерациях возникает прерывание цикла, инициированное выполнением метода Break. Различие связано с тем, что у метода Parallel.ForEach нет номера итерации
(3) семантики двух методов совпадают и в том случае, когда на итерациях возникает прерывание цикла, инициированное выполнением метода Break, для метода Parallel.ForEach используется внутренняя нумерация элементов коллекции
Рассмотрим ситуацию, когда управление бизнес-логикой приложения осуществляется в визуальном интерфейсе, работающем в потоке, отличном от потока, в котором работает бизнес-логика. Какой недостаток можно отметить в организации взаимодействия управляющего и управляемого процесса, основанного на взаимных ссылках?
(1) интерфейс должен знать бизнес-логику. Это означает, что в интерфейсном коде используются объекты бизнес-логики
(2) бизнес-логика должна знать интерфейс. Это означает, что в коде бизнес-логики используются интерфейсные объекты
(3) никаких недостатков нет. Это лучший способ организации взаимодействия управляемого и управляющего процессов
Укажите истинные высказывания:
(1) блокировка может стать причиной зависания программы
(2) блокировка позволяет справиться с проблемой гонки данных
(3) проблема Map – Reduce возникает для систем с общей памятью
(4) проблема Map – Reduce возникает для систем с распределенной памятью
Какие утверждения справедливы для класса SemaphoreSlim?
(1) предоставляет некоторый способ блокировки потоков
(2) использует методы Wait и Pulse для организации блокировки
(3) позволяет пропустить за блокирующий семафор несколько потоков
(4) позволяет моделировать ситуацию совместного использования общего ресурса
Каким отношением связаны классы Task и Task<TResult>?
(1) класс Task является наследником класса Task<TResult>
(2) класс Task<TResult> является наследником класса Task
(3) класс Task является клиентом класса Task<TResult>
(4) класс Task<TResult> является клиентом класса Task
При выполнении методов Parallel.For и Parallel.ForEach на одной или нескольких итерациях могут возникать исключительные ситуации. Правда ли, что: 
(1) в момент возникновения такой ситуации выполнение всех итераций прекращается. Для каждой ситуации должен быть предусмотрен обработчик, перехватывающий выполнение
(2) все запущенные итерации продолжают выполняться, после чего запускаются итерации с номерами меньшими минимального номера итерации, на которой возникла исключительная ситуация. Обработчик ситуации следует предусмотреть только для итерации с минимальным номером
(3) все запущенные итерации продолжают выполняться, после чего запускаются итерации с номерами меньшими минимального номера итерации, на которой возникла исключительная ситуация. Все возникшие исключительные ситуации перехватываются, на их основе создается новая исключительная ситуация AggregateException, для которой и следует предусмотреть обработчик ситуации