Каким образом можно распараллелить следующий LINQ-запрос?
var q = data.Select(item => f(item)).Where(o => p(o));
(Отметьте один правильный вариант ответа.)
Вариант 1 использовать параметр ParallelOptions при выполнении запроса Select
Вариант 2 использовать параметр ParallelOptions при выполнении запроса в методе ToList() или ToArray()
Вариант 3 добавить модификатор AsParallel() в конец запроса
Вариант 4 модификация запроса не требуется. Обработка запросов в C# 4.0 автоматически распараллеливается.
Вариант 5 добавить модификатор AsParallel() после источника данных
Блочное (динамическое) разделение данных осуществляется при выполнении следующего PLINQ-запроса:
(Отметьте один правильный вариант ответа.)
Вариант 1 ParallelData.Select(o => f(o)).GroupBy(o.Key);
Вариант 2 ParallelEnumerable.Range(1, 1000).Where(i => i%5 == 0).Select(i=> i*i);
Вариант 3 Partitioner.Create(ParallelData, true).Where(item=>f(item)).Select(item=>f(item);
Вариант 4 блочное разделение данных осуществляется во всех PLINQ-запросах
Какие LINQ-операторы снижают эффективность распараллеливания:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 WithMergeOptions(ParallelMergeOptions.FullyBuffered)
Вариант 2 AsOrdered
Вариант 3 WithMergeOptions(ParallelMergeOptions.NotBuffered)
Вариант 4 WithCancellation
Какие операторы выполняются последовательно в PLINQ-запросах
(Отметьте один правильный вариант ответа.)
Вариант 3 нет правильного ответа
Для отмены выполняющегося PLINQ-запроса можно использовать
(Отметьте один правильный вариант ответа.)
Вариант 1 не существует возможности отменить выполняющийся запрос
Вариант 2 метод Cancel объекта ParallelQuery<T>
Вариант 3 метод Stop объекта ParallelQuery<T>
Вариант 4 метод Cancel объекта CancellationTokenSource
Какой запрос выполняется последовательно
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 ParallelEnumerable.Range(1, N).Where(n=> n % 2 == 0).ToArray();
Вариант 2 ParallelEnumerable.Range(1, N).Take(5).ToArray();
Вариант 3 ParallelEnumerable.Range(1, N).SelectMany(i => f(i)).ToArray();
Вариант 4 ParallelEnumerable.Range(1, N).Where(n=>true).Take(5).ToArray();
Какие операторы используются только в параллельных запросах
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 SelectMany
Вариант 2 Aggregate
Вариант 3 WithCancellation
Вариант 4 AsUnordered
Операторы агрегирования для объекта ParallelQuery<T>
(Отметьте один правильный вариант ответа.)
Вариант 1 объект ParallelQuery<T> не позволяет выполнять операторы агрегирования
Вариант 2 выполняется последовательно
Вариант 3 могут выполняться как последовательно, так и параллельно
Вариант 4 выполняется параллельно
Можно ли выполнить досрочную остановку выполнения PLINQ-запроса?
(Отметьте один правильный вариант ответа.)
Вариант 1 с помощью генерации исключения при обработке элементов
Вариант 2 не существует возможности досрочной остановки
Вариант 3 методы Stop и Break объекта ParallelLoopState
Вариант 4 с помощью токена отмены
Разделение данных по диапазону осуществляется в следующих PLINQ-запросах:
(Отметьте один правильный вариант ответа.)
Вариант 1 разделение данных по диапазону осуществляется во всех PLINQ-запросах
Вариант 3 var q = ParallelData.GroupBy(o.Key);
Вариант 4 var q = ParallelEnumerable.Range(1, 1000).Where(i => i%5 == 0).Select(i=> i*i);
Агрегированные вычисления могут осуществляться параллельно для следующих операторов
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 агрегированные вычисления осуществляются только последовательно
Вариант 2 Max
Вариант 3 Min
Вариант 4 Aggregate
Блок try для обработки исключений, возникающий при выполнении PLINQ-запроса, обрамляет:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 определение запроса
Вариант 2 обращение к методам ToList, ToArray, ToDictionary
Вариант 3 обработка исключений осуществляется внутри запроса
Вариант 4 перебор элементов запроса в for- или foreach-цикле
Какие запросы выполняются параллельно?
(Отметьте один правильный вариант ответа.)
Вариант 1 ParallelEnumerable.Range(1, N).Where(n=>true).Take(5).ToArray();
Вариант 2 ParallelEnumerable.Range(1, N).Where(n=> n % 2 == 0).ToArray();
Вариант 3 ParallelEnumerable.Range(1, N).Where(n=> n % 2 == 0).Take(5).ToArray();
Вариант 4 ParallelEnumerable.Range(1, N).Take(5).ToArray();
Каким образом можно распараллелить следующий LINQ-запрос?
var q = from n in numbers
where n % 2 > 0
select n;
(Отметьте один правильный вариант ответа.)
Вариант 1 модификация запроса не требуется. Обработка запросов в C# 4.0 автоматически распараллеливается.
Вариант 2 добавить служебные слова as parallel в конец запроса
Вариант 3 добавить вызов метода AsParallel() для источника данных
Вариант 4 использовать параметр ParallelOptions при выполнении запроса в методе ToList() или ToArray()
Следующий запрос выполняется
var q = ParallelEnumerable.Range(1, N).Where(n=>true).Take(10).ToArray();
(Отметьте один правильный вариант ответа.)
Вариант 1 параллельно или последовательно в зависимости от величины N
Вариант 2 нет правильных вариантов
Вариант 3 параллельно
Вариант 4 последовательно
Для параллельного выполнения следующего LINQ-запроса необходимо:
var q = Enumerable.Range(1, 100000).Select( i => f(i)).Where(d => d% 11);
(Отметьте один правильный вариант ответа.)
Вариант 1 добавить вызов метода AsParallel перед методом Range
Вариант 2 использовать параметр ParallelOptions при выполнении запроса в методе ToList() или ToArray()
Вариант 3 добавить вызов метода AsParallel перед методом Select
Вариант 4 добавить вызов метода AsParallel в конец запроса
Хэш-секционирование для разделения данных используется в следующих фрагментах:
- var q = ParallelData.GroupBy(o => o.Key);
- var q = ParallelData.Distinct();
- var q = ParallelData.Wherede(o => f(o));
- ни в одном из фрагментов не применяется хэш-секционирование