Главная / Программирование / Параллельное программирование для многоядерных процессоров

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

Правильные ответы выделены зелёным цветом.
Все ответы: Данный учебный курс ориентирован на изучение и практическое применение современных высокоуровневых средств параллельного программирования для многоядерных процессоров - библиотеки Microsoft Parallel FX и языка программирования MC#. Использование таких средств, с промышленной точки зрения, резко повышает производительность и продуктивность работы программистов и позволяет привлечь к регулярному параллельному программированию значительно большее число программистов, а с образовательной точки зрения, дает возможность их успешно изучать и осваивать студентам вузов, начиная со 2-го курса.
Смотрите также:
Какая среда исполнения в Windows-системах необходима для работы приложений MC#?
(1) система Mono
(2) Microsoft Compact Framework
(3) Microsoft .NET Framework
Может ли библиотека Parallel FX Library использоваться в неуправляемом коде?
(1) не может
(2) может
(3) может только при использовании многоядерных процессоров
Какой уровень параллелизма в библиотеке PFX является базовым?
(1) уровень декларативной обработки данных
(2) уровень императивной обработки данных
(3) уровень императивной работы с задачами
Для каких целей предназначен язык MC#?
(1) для программирования только в однопроцессорных системах
(2) для программирования приложений в системах с многоядерными процессорами
(3) для программирования приложений работающих в Grid-сетях
Библиотека Parallel FX Library входит в состав:
(1) Visual Studio 2005
(2) Visual Studio 2008
(3) Visual Studio 2010
(4) .NET 4 CTP
(5) Borland C++ Builder 5
Укажите правильное объявление функции запроса потока у пула с использованием библиотеки PFX:
(1) Task.CreateThread(delegate { ... });
(2) Task.New(delegate { ... });
(3) Task.Create(delegate { ... });
В чём заключается ключевая особенность языка Polyphonic C#?
(1) изменение синхронных методов
(2) добавление "асинхронных" методов
(3) добавление синхронных методов
Возможно ли использование Parallel Extensions в однопроцессорных системах?
(1) возможно
(2) невозможно
(3) возможно только при использовании неуправляемого кода
Что происходит при вызове метода Task.Create?
(1) задача запускается на выполнение сразу после вызова этого метода
(2) задача помещается в очередь планировщика задач
(3) задача запускается на выполнение и после этого помещается в очередь планировщика
Какие в MC# существуют способы исполнения на удалённых машинах автономных асинхронных методов?
(1) явное указание
(2) автоматическое (на наименее загруженном узле кластера)
Какое основное назначение методов TPL API?
(1) разбивают запрос на небольшие задачи
(2) разбивают цикл или последовательность блоков кода на задачи
(3) планируют выполнение задач
В Чём отличие класса System.Threading.Tasks.Future<T> от классаSystem.Threading.Taks.Task?
(1) класс Future<T> может возвращать значение
(2) объекты класса Future<T> могут создаваться без указания тела задачи
(3) класс Future<T> не может возвращать значение
Укажите назначение async-методов:
(1) используются для создания параллельных процессов (потоков)
(2) могут быть перенесены для исполнения на другие машины
(3) исполняются асинхронно и локально на одной машине (в виде отдельных потоков)
Каким требованиям должна удовлетворять программа для её эффективного распараллеливания?
(1) наличие достаточного объема работы, как минимум перекрывающий издержки самого процесса распараллеливания
(2) изменением гранулярности, путём максимального увеличения подзадач
(3) изменением гранулярности, путём максимального уменьшения подзадач
Укажите правильный вариант распараллеливания запроса LINQ в PLINQ: IEnumerable<T> data = ...; var q = data.Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x)); foreach (var e in q) a(e);
(1) IEnumerable<T> data = ...; var q = data.AsParallel().Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x)); foreach (var e in q) a(e);
(2) IEnumerable<T> data = ...; var q = from x in data.AsParallel() where p(x) orderby k(x) select f(x); foreach (var e in q) a(e);
(3) IEnumerable<T> data = ...; var q = data.Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x)); Parallel.foreach (var e in q) a(e);
Что явлется основой взаимодействия параллельных процессов в языке MC#?
(1) использование разделяемой памяти
(2) передача сообщений
(3) использование общих потоков
Укажите в каком из примеров применено распараллеливание цикла?
(1) while (x) { if (y == x) break; }
(2) for (int i = 0; i < 100; i++) { a[i] = a[i]*a[i]; }
(3) Parallel.For(0, 100, delegate(int i) { a[i] = a[i]*a[i]; });
Что обеспечивает класс BlockingCollection<T> библиотеки PFX?
(1) блокирование потребителей при отсутствии данных в очереди
(2) блокирование производителей при достижении определенного объема данных в очереди
(3) возможность параллельной работы с несколькими очередями
Укажите отличия async- и movable-методов от обычных, синхронных, методов
(1) вызывающая программа не ожидает завершения вычислений этих методов
(2) вызывающая программа всегда ожидает завершения вычислений этих методов
(3) не возвращают результаты
(4) не могут объявляться статическими
Укажите правильное определение планировщика задач:
(1) планировщик задач - это программа, реализующая алгоритм планирования исполнения задач
(2) планировщик задач - это программа, обеспечивающая запланированный запуск программ в системе
(3) планировщик задач - это программа, обеспечивающая межпроцессорное взаимодействие
С помощью какого метода происходит распараллеливание запроса PLINQ?
(1) Range()
(2) AsParallel()
(3) ParallelLINQ(...)
Укажите правильный синтаксис определения связок в MC#:
(1) chord-declaration ::= [handler-header] [& channel-header]* body
(2) chord-declaration ::= [channel-header] [& handler-header]* body
(3) chord-declaration ::= [handler-header]* body
Какой тип планирования используется в многопроцессорных системах?
(1) монопольный
(2) динамический
(3) приоритетный
Укажите правильное определение операции агрегирования в LINQ:
(1) это операция выполняющая сортировку в последовательности элементов
(2) это операция определяющая размер некоторой последовательности элементов
(3) это операция вычисления некоторого суммарного, сводного значения по некоторому множеству элементов
Что произойдёт если к моменту вызова обработчика канальных сообщений, связанный с ним канал окажется пуст?
(1) вызывается исключение
(2) вызов обработчика блокируется
(3) по оператору return происходит возврат нулевого значения обработчику
Что произойдёт при использовании децентрализованного планирования если пул процессора в многопроцессорной системе окажется пуст
(1) процессор прервёт выполнение других процесооров для того чтобы взять потоки из их пулов
(2) процессор будет ждать пока в его пуле снова не появятся потоки
(3) процессор будет брать потоки из пулов других процессоров
Какие параметры необходимо указать при использовании функции Aggregate в LINQ?
(1) исходную обрабатываемую последовательность
(2) начальное значение переменной-аккумулятора
(3) конечное значение переменной-аккумулятора
(4) вычислительную функцию
(5) функцию пост-обработки результата
При копировании каналов и обработчиков на удаленную машину автономно или в составе некоторого объекта они становятся:
(1) независимыми объектами
(2) прокси-объектами
(3) нулевыми объектами
Какой метод позволяет распараллелить исполнение блоков операторов в многопроцессорных системах?
(1) Parallel.For
(2) Parallel.ForEach
(3) Parallel.Invoke
Какова особенность исключений в параллельных приложениях?
(1) исключительные ситуации могут возникнуть только в потоке имеющем наибольший приоритет
(2) обработка возникших исключительных ситуаций может выполняться в отдельном потоке
(3) исключительные ситуации могут возникнуть одновременно в разных потоках
Укажите верные утверждения в отношении movable-методов:
(1) они планируются для исполнения на другой машине (узле кластера или машине GRID-сети)
(2) вызов этих заканчивается, по существу, мгновенно
(3) они никогда не возвращают результатов
В методе Parallel.For(Int32, Int32, Action<Int32>) что определяет параметр Action<Int32>?
(1) конечный индекс
(2) начальный индекс
(3) делегат, определяющий действие на каждой итерации
Какие координационные структуры данных PFX используются для безопасного применения в многопоточной среде?
(1) ConcurrentQueue<T>
(2) Queue<T>
(3) ConcurrentStack<T>
Какая функциональная часть Runtime-системы языка MC# контролирует выполнение movable-методов?
(1) Communicator
(2) WorkNode
(3) ResourceManager
Укажите правильные утверждения в отношении вложенных параллельных циклов:
(1) применение вложенных параллельных циклов в многопроцессорных системах недопустимо
(2) вложенные параллельные циклы возможны
(3) c применением вложенных параллельных циклов произойдёт снижение быстродействия
Какие координирующие структуры данных используются в библиотеке PFX?
(1) System.Threading.LazyInit<T>
(2) System.Threading.WriteOnce<T>
(3) System.Threading.Collections.BlockingCollection<T>
Какая Runtime-среда исполнения обязательна для работы приложений MC#?
(1) CLR
(2) VCL
(3) SQL
Библиотека Parallel FX Library предназначена для:
(1) написания программ в однозадачных средах
(2) последовательного выполнения задач
(3) распараллеливания задач
Какой уровень параллелизма в библиотеке PFX является универсальный и более гибкий?
(1) уровень императивной обработки данных на базе конструкций Parallel.For/ForEach/InvokeБ
(2) уровень императивной работы с задачами (tasks)
(3) уровень декларативной обработки данных
На базе какого языка был создан язык MC#?
(1) Yava
(2) Polyphonic C#
(3) C
(4) Perl
Какие способы организации параллелизма использует Parallel Extensions?
(1) параллелизм на уровне задач
(2) механизм использующий параллельную реализацию LINQ-а
(3) параллелизм при императивной обработке данных
Укажите что выполняет следующий пример: Task t1 = Task.Create(delegate { A(); }); Task t2 = Task.Create(delegate { B(); }); Task t3 = Task.Create(delegate { C(); }); t1.Wait(); t2.Wait(); t3.Wait();
(1) последовательное выполнение трёх задач и ожидание завершения их выполнения
(2) параллельное выполнение трёх задач и ожидание завершения их выполнения
(3) последовательное выполнение двух задач с ожиданием третьей
Укажите назначение "асинхронных" методов в языке Polyphonic C#:
(1) выполнение базовой вычислительной работы, исполняемых в отдельных потоках
(2) доставка данных обычным синхронным методам
(3) синхронизация синхронных методов
Что произойдёт при использовании Parallel Extensions в многоядерных системах когда станут доступны другие ядра?
(1) автоматически вовлечёт их в работу
(2) не будет использовать их пока не завершится выполнение всех задач
(3) заблокирует работу действующих ядер и переключит на освободившиеся
Какие методы отменяют выполнение задачи?
(1) Task.Cancel
(2) Task.WaitAll
(3) Task.CancelAndWait
Как осуществляется взаимодействие асинхронных методов в языке MC#?
(1) через статические переменные метода
(2) посредством передачи сообщений с использованием каналов и обработчиков канальных сообщений
(3) посредством передачи сообщений без использования связок
Какие методы содержатся в TPL API?
(1) Parallel.For
(2) Parallel.ForEach
(3) Parallel.Invoke
Укажите в каком примере происходит распараллеливание выполнения функции, вычисляющей количество узлов в бинарном дереве
(1) int CountNod(Tree<int> node) { if (node == null) return 0; return 1 + CountNod(node.Left) + CountNod(node.Right); }
(2) int CountNod(Tree<int> node) { if (node == null) return 0; return CountNod(node.Left) + CountNod(node.Right); }
(3) int CountNod(Tree<int> node) { if (node == null) return 0; var left = Future.Create(() => CountNod(node.Left)); int right = CountNod(node.Right); return 1 + left.Value + right; }
Укажите назначение movable-методов:
(1) могут быть перенесены для исполнения на другие машины
(2) исполняются асинхронно и локально на одной машине (в виде отдельных потоков)
(3) используются для создания параллельных процессов (потоков)
Что произойдёт если количество подзадач в параллельной программе будет слишком большим?
(1) большинство из них будут простаивать в очереди к ядрам процессора
(2) увеличится общая производительность системы
(3) увеличится объём издержек на запуск подзадач
Укажите правильные утверждения в отношении PLINQ
(1) это механизм выполнения запросов, принимающий любые запросы LINQ
(2) PLINQ автоматически использует несколько процессоров или ядер для исполнения
(3) параллелизм данных, лежащий в основе PLINQ, гарантирует, что программы сохранят масштабируемость по мере роста наборов данных
Укажите правильное определение async-метода:
(1) модификаторы async имя_метода(аргументы) { ... }
(2) модификаторы movable имя_метода(аргументы) { ... }
(3) async модификаторы имя_метода(аргументы) { ... }
Укажите в каком из примеров произойдёт ошибка компиляции?
(1) using System.Threading; … Parallel.For(0, N, delegate(int i)) { res[i] = Func(i); };
(2) using System.Threading; … Parallel.For(0, N, delegate(int i) { res[i] = Func(i); });
(3) using System.Threading; … Parallel.For(0, N, Func(int i) { res[i] = Func(i); });
Какой потокобезопасный вариант стандартного стека используется в библиотеке PFX?
(1) System.Threading.Collections.ConcurrentStack<T>
(2) System.Collections.Generics.Stack<T>
(3) System.Threading.Collections.ConcurrentQueue<T>
Какой из перечисленных вариантов содержит правильный вызов movable-метода (схематично)?
(1) имя_объекта.имя_метода(аргументы)
(2) имя_машины@имя_объекта.имя кластера.имя_метода(аргументы)
(3) имя_машины@имя_объекта.имя_метода(аргументы)
Какие задачи выполняет планировщик задач?
(1) снижение максимальной загрузки процессоров
(2) обеспечивание высокой пропускной способности системы
(3) обеспечивание максимальной загрузки процессоров
В какую библиотеку встроена реализация параллельного интегрированного языка запросов PLINQ?
(1) System.Linq
(2) System.Threading
(3) System.PLinq
Укажите правильный вариант определения связки с одним каналом в MC#:
(1) handler hnd bool() & channel chan1(int a) & channel chan2(int b) & channel chan3(int c) { int x = (a+b)/c; return (false); }
(2) handler hnd bool()& channel chan1(int a) & channel chan2(int b) { if (a == b) return (true); if (a == 2) return (false); }
(3) handler hnd bool()& channel chan(int a) { if (a == 3) return (true); }
Укажите планирование, при котором единый планировщик отсутствует, а процессоры сами выбирают какие задачи им исполнять?
(1) децентрализованное планирование
(2) централизованное планирование
(3) монопольное планирование
Какая функция-шаблон ипользуется в языке LINQ для операций агрегирования
(1) Aggregate
(2) Parallel.For
(3) Parallel.ForEach
Что произойдёт если к моменту прихода значения по каналу, нет вызовов обработчика?
(1) значение сохраняется во внутренней очереди канала
(2) это значение сбрасывается
(3) вызывается исключение
Что произойдёт при использовании децентрализованного планирования в многопроцессорной системе если исполнение потока будет блокировано внешним событием?
(1) процессор извлекает новый поток, а блокированный помещает назад
(2) процессор удаляет блокированный поток из пула и выполняет следующий
(3) процессор передаёт блокированный поток другому процессору
Что является необходимым условием корректности параллельного вычисления операции агрегирования?
(1) коммутативность и ассоциативность функции пост-обработки результата
(2) коммутативность и ассоциативность функции редукции
(3) указания начального значения seed переменной-аккумулятора
Какое общее правило срабатывания связки?
(1) тело связки исполняется только после того, как вызваны все методы из заголовка этой связки
(2) тело связки исполняется только после того, как вызван хотя бы один метод из заголовка этой связки
(3) тело связки исполняется сразу же, независимо от вызова методов из заголовка
Какое условие должно соблюдаться для эффективной реализации метода Parallel.Invoke?
(1) если в последовательности операторов порядок выполнения их не имеет значение
(2) если в последовательности операторов порядок выполнения должен строго соблюдаться
(3) если используется большое количество циклов
Что происходит при одновременном возникновении нескольких исключительных ситуаций при использовании библиотеки PFX?
(1) все возникшие исключения собираются в единое исключение типа System.Threading.AggregateException
(2) все исключения обрабатываются средствами самой библиотеки
(3) все возникшие исключения собираются в единое исключение типа System.Exception
Укажите что будет выведено на экран в результате выполнения следующего примера? class B { public int x; public B() { } movable Compute() { x = 2; }} class A { public static void Main( String[] args ) { B b = new B(); b.x = 1; Console.WriteLine( "Before: x = " + b.x ); b.Compute(); Console.WriteLine( "After: x = " + b.x ); }}
(1) Before: x = 1 After: x = 2
(2) Before: x = 1 After: x = 1
(3) Before: x = 2 After: x = 1
В чём особенность использования методов Parallel.For и Parallel.ForEach?
(1) применяются для распараллеливания задач в Parallel Extensions
(2) ни в одной итерации не используются результаты работы с предыдущих итераций
(3) применяются только в многопроцессорных системах
Возможна ли модификация объектов классов ConcurrentQueue<T> и СoncurrentStack<T> в цикле foreach?
(1) возможна
(2) невозможна
Какой класс Runtime-системы языка MC# реализует вычислительную сессию?
(1) Handler
(2) Serialization
(3) Session
Можно ли распараллелить внутренний цикл for (int k = 0; k < size; k++) в следующем примере, без применения блокировок? Parallel.For( 0, size, delegate(int i) { Parallel.For( 0, size, delegate(int j) { result[i, j] = 0; for (int k = 0; k < size; k++) { result[i, j] += m1[i, k] * m2[k, j]; } }); });
(1) распаралеливать внутренний цикл нельзя
(2) распаралеливать внутренний цикл можно
Какой класс библиотеки PFX используется для того чтобы отложить создание объекта, до того момента когда он действительно потребуется?
(1) System.Threading.LazyInit<T>
(2) System.Threading.WriteOnce<T>
(3) System.Threading.Collections.ConcurrentQueue<T>
Какая среда исполнения в Linux-системах необходима для работы приложений MC#?
(1) Microsoft Compact Framework
(2) Microsoft .NET Framework
(3) система Mono
Какие преимущества достигаются при использовании Parallel FX Library?
(1) увеличение производительности при использовании только с несколькими процессорами
(2) увеличение производительности при использовании в многоядерных процессорах или с несколькими процессорами
(3) упрощение параллельного программирования
Укажите уровень параллелизма библиотеки PFX использующий PLINQ
(1) уровень императивной работы с задачами
(2) уровень императивной обработки данных
(3) уровень декларативной обработки данных
Какая цель достигалась при создании языка Polyphonic C#?
(1) использовние высокоуровневых средств асинхронного параллельного программирования
(2) использование параллельного программирования в серверных и клиент-серверных приложениях
(3) обеспечение переносимости приложений с Windows на Unix системы
Использование библиотеки PFX возможно при:
(1) установленной только версии .NET Framework 1.0
(2) установленной любой версии .NET Framework
(3) установленном .NET Framework 3.5
Аналогом какого класса является класс System.Threading.Tasks.Task?
(1) System.Threading.ThreadPool
(2) System.Threading.Parallel
(3) System.Threading.Pool
Какая языковая конструкция была введена для синхронизации синхронных и асинхронных методов?
(1) связки
(2) перекрёстные ссылки
(3) указатели
Какие компоненты и данные содержит Microsoft Parallel Extensions?
(1) PLINQ
(2) TPL
(3) SQL
(4) набор координирующих структур данных
Укажите параметры передаваемые планировщику задач бибилиотеки PFX:
(1) minProcessors
(2) maxProcessors
(3) maxStackSize
(4) idealThreadsPerProcessor
(5) threadPriority
Какие ключевые конструкции должен иметь язык параллельного программирования?
(1) средства для создания параллельных процессов
(2) средства для обеспечения взаимодействия параллельных процессов между собой
(3) средства для синхронизации параллельных процессов
Что произойдёт при использовании параллельного цикла (с применением PFX) в однопроцессорной машине?
(1) возникнет исключительная ситуация
(2) цикл будет выполнен параллельно
(3) цикл будет выполнен последовательно
Укажите в каком примере происходит распараллеливание с применением PLINQ?
(1) var q = (from d in _doubles.AsParallel() where Test(d) orderby d select d).ToArray();
(2) var q = (from d in _doubles where Test(d) orderby d select d).ToArray();
(3) var q = (from e in _ent where TestForEntity(e) select e).ToArray();
Какие ключевые слова были введены в MC# для написание параллельной, распределенной программы?
(1) sync
(2) async
(3) movable
Что произойдёт если количество подзадач в параллельной программе будет слишком маленьким?
(1) некоторые ядра процессора будут простаивать
(2) уменьшится общая производительность системы
(3) увеличится общая производительность системы
К чему приводит использование распараллеливания легковесных операций с применением Future<T>?
(1) увеличению времени работы параллельной программы
(2) ростом дополнительных издержек на создание объектов класса Future<T>
(3) значительному выделению памяти
Укажите правильное определение movable-метода:
(1) модификаторы async имя_метода(аргументы) { ... }
(2) модификаторы movable имя_метода(аргументы) { ... }
(3) movable модификаторы имя_метода(аргументы) { ... }
Укажите в каком из примеров применено распараллеливание цикла?
(1) while (x != y) { for (int k = 0; k != List.Count; k++) if ((k - x) >= 30) return; }
(2) foreach(int item in List) { int iCount += item; }
(3) Parallel.Foreach(data, delegate(ClassRes сl)) { FuncRes(cl); }
Укажите что выполняет следующий код класса ConcurrentQueue<T>: Data dt; while(queue.TryDequeue(out dt)) { Func(dt); }
(1) помещает елементы в очередь
(2) извлекает елементы из очереди
(3) помещает елементы в стек
Что происходит во время вызова movable-метода?
(1) объект, которому принадлежит movable-метод, и его аргументы копируются на удаленную машину
(2) объект, которому принадлежит movable-метод, и его аргументы перемещаются на удаленную машину
(3) на удаленную машину копируется только объект, которому принадлежит movable-метод, без аргументов
Какие классические дисциплины планирования используются в однопроцессорных системах?
(1) LIFO
(2) FIFO
(3) круговое обслуживание задач с вытеснением
Укажите вариант правильного распараллеливания следующего запроса (схематично): IEnumerable<T> Data = …; var query = from x in Data where p(x) orderby k(x) select f(x); foreach (var e in query) func(e);
(1) IEnumerable<T> Data = …; var query = from x in Data.AsParallel() where p(x) orderby k(x) select f(x); foreach (var e in query) func(e);
(2) IEnumerable<T> Data = …; var query = from x in Data select f(x); foreach (var e in query) func(e);
Укажите какой из вариантов вызовет ошибку компиляции?
(1) handler hnd float() & channel chan1(float a) & channel chan2(float b) { float x = a+b; return (x); }
(2) handler hnd bool()& channel chan1(int a) & channel chan2(int b) { if (a == b) return (a); }
(3) handler hnd bool() & channel chan(int a) { if (a == 3) return (true); }
Укажите планирование, при котором планировщик контролирует единый пул задач в системе и назначает задачи процессорам?
(1) децентрализованное планирование
(2) централизованное планирование
(3) монопольное планирование
Укажите примеры операций агрегирования:
(1) вычисление суммы последовательности чисел
(2) определение минимального или максимального значения последовательности
(3) вычисление суммы квадратов последовательности
(4) возведение в степень некоторого числа
Что произойдёт при вызове обработчика и при наличии значений во всех каналах соответствующей связки?
(1) будут обработаны последние по порядку значения из очередей каналов
(2) будут обработаны первые по порядку значения из очередей каналов
Какой основной принцип динамического планирования в многопроцессорных системах
(1) планирование с учетом состояния процессов системы в определённый момент времени
(2) планирование с учетом состояния процессов системы в текущий момент времени
(3) планирование с учетом состояния процессов системы за определённый промежуток времени
Может ли любая операция агрегирования корректно вычислена с помощью шаблонов типа Aggregate в PLINQ?
(1) может всегда
(2) может, если заранее результат моделирования шагов вычисления дает корректный результат
Укажите правила корректного определения связок в MC#:
(1) все формальные параметры каналов и обработчика в связке должны иметь различные идентификаторы
(2) формальные параметры каналов и обработчиков не могут содержать модификаторов ref или out
(3) каналы и обработчики в связке не могут быть объявлены как static
Укажите в каком из примеров будет применено распараллеливание?
(1) Parallel.ForEach(Directory.GetFiles(path, "*.jpg"), Path => { ProcessImage(Path); });
(2) class Tree<T> { public T Data; public Tree<T> Left, Right; } static void Walk<T>(Tree<T> tree, Action <T> func) { if (tree = null) return; Walk(tree.Left, func); Walk(tree.Right, func); func(tree.Data); }
(3) class Tree<T> { public T Data; public Tree<T> Left, Right; } static void Walk<T>(Tree<T> tree, Action <T> func) { if (tree = null) return; Parallel.Invoke( () => Walk(tree.Left, func); () => Walk(tree.Right, func); () => func(tree.Data)); }
Какой общий принцип перехвата исключений в параллельной программе?
(1) перехват исключительных ситуаций необходимо выполнять как можно дальше от места их возникновения
(2) перехват исключительных ситуаций необходимо выполнять как можно ближе к месту их возникновения
(3) перехват исключительных ситуации осуществляется только средствами библиотеки PFX, без применения дополнителной обработки
Какие правила определения связок в языке MC#?
(1) в связке только один заголовок метода может иметь тип возвращаемого значения, отличный от Channel
(2) все формальные параметры во всех заголовках методов в связке должны иметь различные идентификаторы
(3) заголовки методов в связке не могут быть объявлены как static
Возможно ли организовать передачу информации между итерациями цикла, исполняющимися в одном потоке, при использовании Parallel.For/ForEach?
(1) возможно при использовании перегруженных вариантов
(2) невозможно
Укажите в каком из примеров выполнение кода вызовет исключительную ситуацию?
(1) var q = new Queue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in q) { if (item <= 2) q.Enqueue(item * 2); }
(2) var q = new ConcurrentQueue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in q) { if (item <= 2) q.Enqueue(item * 2); }
(3) var s = new ConcurrentQueue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in s) { s.Enqueue(item * 2); }
Укажите основные функции компилятора MC#:
(1) замена вызовов async-методов на порождение соответствующих локальных потоков
(2) замена вызовов movable-методов на запросы менеджеру распределения ресурсов
(3) замена канальных вызовов на пересылку соответствующих сообщений по TCP-соединению
(4) добавление выражений, создающих объекты типа Channel и Handler для каждого из каналов и обработчиков
Укажите правильные утверждения в отношении следующего примера: Parallel.For( 0, size, delegate(int x) { Parallel.For( 0, size, delegate(int y) { result[x, y] = 0; for (int k = 0; k < size; k++) { result[x, y] += m1[x, k] * m2[k, y]; } }); });
(1) при правильном распараллеливании внутреннего цикла упадёт производительность
(2) распаралеливать внутренний цикл нельзя, поскольку его итерации зависят друг от друга
(3) правильно распараллелить внутренний цикл можно только с помощью блокировки
Какой класс библиотеки PFX используется для работы с полями допускающими однократное присваивание.
(1) System.Threading.Collections.ConcurrentStack<T>
(2) System.Threading.LazyInit<T>
(3) System.Threading.WriteOnce<T>