Параллельное программирование с помощью языка C# - ответы

Количество вопросов - 135

Конкурентные коллекции типа ConcurrentStack<T>, ConcurrentQueue<T>, ConcurrentBag<T> можно создавать:

Какие средства синхронизации можно использовать для ожидания событий из другого потока?

Применение многопроцессного выполнения связано со следующими проблемами:

Параллельный алгоритм состоит из четырех независимых подзадач, которые выполняются за одинаковое время. Ускорение алгоритма на двуядерной системе составляет 1.5. Чему равно ускорение алгоритма на четырех ядерной системе?

Следующий фрагмент приводит к действиям планировщика:
 static void Main()  {  Thread thread = new Thread(() => {    Parallel.Invoke(f1, f2);  f3();  });  thread.Start();  }    

При выполнении параллельной обработки с помощью метода Parallel.For

Для выполнения циклической обработки с большим числом итераций и малой вычислительной нагрузкой на каждой итерации эффективнее использовать:

Какие методы типа Task и объекта типа Task предполагают блокировку текущего потока до завершения задачи

Следующий фрагмент приводит к действиям планировщика
 static void Main()  {   ThreadPool.QueueUserWorkItem(f1,);  ThreadPool.QueueUserWorkItem(f2,);  ThreadPool.QueueUserWorkItem(f3); }  

Выберете правильные утверждения, соответствующие применению синхронизации

Технология Inlined execution предназначена для оптимизации выполнения:

Выберете правильные утверждения, соответствующие системам с общей памятью

Сигнальные сообщения типа ManualResetEventSlim позволяют:

Объект ThreadPool позволяет:

Для выполнения пользовательских задач с помощью пула потоков необходимо:

Класс Monitor поддерживает следующие возможности:

Вызов метода CompleteAdding для объекта типа BlockingCollection<T> приводит к:

Каким образом выделить для задачи независимый поток, не участвующий в обработке других задач пула?

Какие LINQ-операторы снижают эффективность распараллеливания:

Какой инструмент синхронизации можно использовать для организации потокобезопасного увеличения счетчика целочисленного типа?

Какие операторы выполняются последовательно в PLINQ-запросах

Реализация блочной декомпозиции при параллельной обработке с помощью метода Parallel.ForEach позволяет

Объект Semaphore обладает следующими возможностями:

Вызов метода Thread.Sleep(0) приводит к следующему:

Хэш-секционирование для разделения данных используется в следующих фрагментах:

Какой метод объекта ParallelLoopState позволяет досрочно выйти из цикла на заданной итерации, вне зависимости от того, какие итерации уже обработаны?

Выберете правильные утверждения

Какое предельное ускорение может быть получено согласно закону Амдала для параллельной программы, содержащей 80% параллельного кода

Параллельный алгоритм состоит из четырех подзадач, которые начинают выполняться одновременно. Время работы каждой подзадачи составляет: 1, 2, 3 и 4 мс соответственно. Чему равно общее время работы алгоритма, если затратами на подготовку подзадач и агрегирование результатов можно пренебречь?

В каких состояниях может находиться поток в процессе работы, если он не выполняет операций ввода-вывода, обращений к функциям ядра и не приостанавливается другими потоками?

В каких случаях не возникает проблема гонки данных

Проблема ложного разделения кэша связана

Параллельный алгоритм состоит из двух подзадач и обеспечивает ускорение в два раза на двуядерной системе. Чему равна эффективность алгоритма системе с четырьмя процессорами?

При каких условиях поток находится в состоянии "Готовый"?

Число рабочих потоков в пуле зависит от следующих факторов:

Локальное хранилище потоков может использоваться для хранения

Для передачи управления другому потоку, конкурирующему за ядро процессора, на котором выполняется данный поток без прекращения его работы, можно использовать:

Для ожидания завершения обработки пользовательских рабочих элементов пулом потоков можно использовать

Применение многопоточности для параллельных вычислений связано со следующими недостатками:

Какие средства синхронизации можно использовать для организации взаимно-исключительный доступ к разделяемому ресурсу?

Какие средства синхронизации можно использовать в нескольких приложениях?

Какие средства синхронизации позволяют избежать «мертвой блокировки» ожидающих потоков при возникновении сбоя внутри критической секции?

Класс Monitor поддерживает следующие возможности:

Метод WaitOne объекта синхронизации Semaphore не приводит к блокировке в случае

Сигнальные сообщения типа AutoResetEvent позволяют:

Выберете правильные утверждения

При выполнении операции добавления Add для объекта типа BlockedCollection<T>, содержащего максимальное число элементов и без вызова CompleteAdding, происходит:

Выберете правильные утверждения

В каких случаях задача завершается со статусом Faulted

Обращение к свойству Result задачи, которая еще выполняется

Для ожидания завершения задачи типа Task<int> можно использовать

Выберете правильные утверждения

Метод Flatten применяется для

Одновременный запуск нескольких задач (добавление в очередь готовых задач) осуществляется в следующих фрагментах кода:

Реализация агрегированных вычислений с помощью метода Parallel.For

Блочная (динамическая) декомпозиция позволяет эффективнее обрабатывать:

Какому методу или методам соответствует оператор break при распараллеливании циклической обработки с помощью Parallel.For?

При осуществлении пакетной обработки с помощью метода Parallel.ForEach синхронизация необходима

При выполнении параллельной обработки с помощью метода Parallel.ForEach

Каким образом можно распараллелить следующий LINQ-запрос?
  var q = data.Select(item => f(item)).Where(o => p(o));  

Какой из перечисленных LINQ-операторов обладает наименьшей эффективностью распараллеливания:

Можно ли выполнить досрочную остановку выполнения PLINQ-запроса?

Какие запросы выполняются параллельно?

Какой вывод наиболее вероятен для следующего фрагмента:
 static void Main()  {   Task t1 = Task.Factory.StartNew(() =>  Console.Write(“A”));  Task t2 = Task.Factory.StartNew(() => {  Task t3 = Task.Factory.StartNew(() =>  Console.Write(“B”));  Console.Write(“C”);  });  }  

Задача t2.3 ожидает завершения задачи t2.2, находящейся в локальной очереди рабочего потока. Стратегия inlined execution приведет

Для изменения порядка обработки вложенных задач, находящихся в локальной очереди потока, необходимо:

Если вложенные задачи выполняются в том же потоке, что и родительская задача, то порядок выполнения следующий:

Число рабочих потоков, участвующих при обработке задач, зависит от следующих факторов::

В каком случае не осуществляется заимствование задач из локальной очереди загруженного потока?

Какой объект синхронизации можно использовать для предотвращения запуска нескольких копий одного приложения?

В рабочей функции потока используется переменная SomeVal типа int. Переменная является общей в следующих случаях:

Какой вывод для следующего фрагмента является наиболее вероятным:
 Task t = Task.Factory.StartNew( () =>  {   Task t1 = Task.Factory.StartNew( () =>   Console.Write (“1”));   Task t2 = Task.Factory.StartNew( () =>   Console.Write (“2”));   Console.Write (“3”);  });  

Для параллельного выполнения следующего LINQ-запроса необходимо:
 var q = Enumerable.Range(1, 100000).Select( i => f(i)).Where(d => d% 11);  

Задачи-продолжения запускаются после завершения задачи предшественника

Выберете утверждения, соответствующие многоядерной архитектуре

Объект Monitor поддерживает следующие возможности

Метод Parallel.For позволяет:

Какой запрос выполняется последовательно

Блок try для обработки исключений, возникающий при выполнении PLINQ-запроса, обрамляет:

Блочное (динамическое) разделение данных осуществляется при выполнении следующего PLINQ-запроса:

Какое предельное ускорение может быть получено согласно закону Амдала для параллельной программы, содержащей 20% последовательного кода

Следующий запрос выполняется
  var q = ParallelEnumerable.Range(1, N).Where(n=>true).Take(10).ToArray(); 

Задачи-продолжения позволяют:

Какие средства синхронизации можно использовать для организации параллельного доступа нескольких потоков к ресурсу?

Декомпозиция по диапазону позволяет эффективнее обрабатывать:

Выберете правильные утверждения

Родительская задача ParentTask завершается без исключений, во вложенной (не дочерней) задаче innerTask возникает исключение. Статусы задач:

В рабочей функции потока используется переменная SomeVal типа int. Переменная является локальной для каждого потока в следующих случаях:

Какие средства синхронизации позволяют организовать барьерную синхронизацию (один поток дожидается завершения нескольких потоков):

Параметр PreferFairness позволяет

Второй аргумент в вызове метода пула потоков задает:ThreadPool.QueueUserWorkItem(f, 5);

В каких случаях возникает проблема гонки данных:

Выберете правильные утверждения, соответствующие системам с общей памятью

В каких случаях обеспечивается относительно равномерная загрузка потоков

Выберете правильные утверждения, соответствующие свойству масштабируемости параллельного приложения

Параллельный алгоритм работает в два раза быстрее последовательного на четырех ядерной системе. Чему равна эффективность алгоритма?

Какое предельное ускорение может быть получено согласно закону Амдала для параллельной программы, содержащей 40% параллельного кода

В какое состояние может перейти поток после завершения операции ввода-вывода, если до операции поток выполнялся?

Метод Thread.Yield игнорируется в случае:

В чем преимущества использования пула потоков для параллельной обработки?

Преимущества использования многопоточности для параллельных вычислений по сравнению с применением многопроцессности связаны:

Какие средства синхронизации используют вызовы ядра операционной системы?

При возникновении необработанного исключения в задаче:

Объявление Task t2 = t1.ContinueWith(..) гарантирует

Каким образом можно распараллелить следующий LINQ-запрос?
  var q = from n in numbers   where n % 2 > 0    select n;  

Агрегированные вычисления могут осуществляться параллельно для следующих операторов

Для отмены выполняющегося PLINQ-запроса можно использовать

Для помещения вложенной задачи в глобальную очередь потока необходимо

Следующий фрагмент приводит к действиям планировщика:
 static void Main()  {  Thread thread = new Thread(() => {    f1();   Task t = Task.Factory.StartNew(() => f2());   });  thread.Start();  }  

Для осуществления заимствования рабочим потоком Thread1 задачи из локальной очереди потока Thread2 необходимо соблюдение следующих условий:

Оптимизация относительного расположения данных в памяти позволяет снять проблему:

Вложенные задачи выполняются (с учетом действия всех стратегий планировщика):

Методы Parallel.For, Parallel.Invoke позволяют

Параметр LongRunning при создании задачи

Операция извлечения Take для объекта типа BlockedCollection<T>, не содержащего элементы и без вызова CompleteAdding, приводит

Разделение данных по диапазону осуществляется в следующих PLINQ-запросах:

В каких случаях не возникает проблема гонки данных

Какие методы работают без явного объявления задач:

Какой метод объекта ParallelLoopState позволяет досрочно выйти из цикла, но обработать все итерации с номером меньшим, чем заданный?

При осуществлении агрегированных вычислений с помощью метода Parallel.For синхронизация необходима

Стратегия Inlined Execution применяется планировщиком

Выберете правильные утверждения

При осуществлении пакетной обработки с помощью метода Parallel.ForEach делегат обработки вызывается

Свободный рабочий поток

Для обработки исключений, возникающих в задаче, блок try обрамляет:

Статус задачи WaitingForActivation соответствует ситуации:

Сигнальные сообщения типа ManualResetEvent позволяют:

Какие операторы используются только в параллельных запросах

Операторы агрегирования для объекта ParallelQuery<T>

При выполнении параллельной обработки с помощью метода Parallel.Invoke

Следующий фрагмент кода приводит к действиям планировщика:
 static void Main()  {  ..  Task t1 = Task.Factory.StartNew( () =>  SomeWork());  Task t2 = Task.Factory.StartNew( () =>  SoweWork());  ..  }  

В родительской задаче tParent запускаются поочередно вложенные задачи tChild1 и tChild2. При каких условиях вложенная задача tChild1 может успеть завершиться раньше, чем задача tChild2?

Освобождение или захват семафора приводит к исключению в следующих случаях

Какой фрагмент кода гарантирует запуск метода f1 до запуска метода f2.

Для отмены задачи необходимо