Главная / Программирование /
Параллельное программирование с помощью языка C# / Тест 7
Параллельное программирование с помощью языка C# - тест 7
Упражнение 1:
Номер 1
Какие средства синхронизации можно использовать для организации взаимно-исключительный доступ к разделяемому ресурсу?
Ответ:
 (1) Mutex
 
 (2) SemaphoreSlim
 
 (3) lock
 
 (4) ManualResetEvent
 
Номер 2
Какой инструмент синхронизации можно использовать для организации потокобезопасного увеличения счетчика целочисленного типа?
Ответ:
 (1) Monitor
 
 (2) Interlocked
 
 (3) SpinWait
 
 (4) ConcurrentBag
 
Номер 3
Какие средства синхронизации можно использовать для организации параллельного доступа нескольких потоков к ресурсу?
Ответ:
 (1) Semaphore
 
 (2) Mutex
 
 (3) AutoResetEvent
 
 (4) lock
 
Упражнение 2:
Номер 1
Какие средства синхронизации можно использовать в нескольких приложениях?
Ответ:
 (1) Semaphore
 
 (2) SemaphoreSlim
 
 (3) Mutex
 
 (4) Monitor
 
Номер 2
Какие средства синхронизации используют вызовы ядра операционной системы?
Ответ:
 (1) Mutex
 
 (2) ManualResetEvent
 
 (3) AutoResetEvent
 
 (4) Monitor
 
Номер 3
Какой объект синхронизации можно использовать для предотвращения запуска нескольких копий одного приложения?
Ответ:
 (1) Monitor
 
 (2) Mutex
 
 (3) Interlocked
 
 (4) SemaphoreSlim
 
Упражнение 3:
Номер 1
Какие средства синхронизации позволяют организовать барьерную синхронизацию (один поток дожидается завершения нескольких потоков):
Ответ:
 (1) Lock
 
 (2) Monitor
 
 (3) Mutex
 
 (4) SemaphoreSlim
 
Номер 2
Какие средства синхронизации позволяют избежать «мертвой блокировки» ожидающих потоков при возникновении сбоя внутри критической секции?
Ответ:
 (1) lock
 
 (2) Semaphore
 
 (3) Mutex
 
 (4) AutoResetEvent
 
Номер 3
Какие средства синхронизации можно использовать для ожидания событий из другого потока?
Ответ:
 (1) AutoResetEvent
 
 (2) Semaphore
 
 (3) Mutex
 
 (4) lock
 
Упражнение 4:
Номер 1
Объект Monitor
поддерживает следующие возможности
Ответ:
 (1) попытка входа в критическую секцию в течение заданного интервала времени 
 (2) попытка входа в критическую секцию 
 (3) вход в критическую секцию нескольких потоков 
 (4) синхронизация на уровне операционной системы (межпроцессная синхронизация) 
Номер 2
Класс Monitor
поддерживает следующие возможности:
Ответ:
 (1) приостановление потока, выполняющего критическую секцию, на заданный интервал времени 
 (2) попытка входа в критическую секцию в течение заданного интервала времени 
 (3) получение информации о заблокированных потоках 
 (4) получение информации о потоке, выполняющем критическую секцию 
Номер 3
Класс Monitor
поддерживает следующие возможности:
Ответ:
 (1) приостановление потока, выполняющего критическую секцию, и освобождение одного из заблокированных потоков 
 (2) попытка входа в критическую секцию в течение заданного интервала времени 
 (3) выполнение критической секции заданным числом потоков 
 (4) получение информации о числе заблокированных потоков 
Упражнение 5:
Номер 1
Метод WaitOne
объекта синхронизации Semaphore
не приводит к блокировке в случае
Ответ:
 (1) метод WaitOne
всегда приводит к блокировке потоков в ожидании сигнала об освобождении объекта синхронизации 
 (2) объект Semaphore
инициирован ненулевым начальным состоянием 
 (3) вызову метода WaitOne
предшествовал вызов Release
с ненулевым значением аргумента 
 (4) объект Semaphore
установлен в ненулевое состояние с помощью метода Set
 
Номер 2
Объект Semaphore
обладает следующими возможностями:
Ответ:
 (1) освобождение заданного числа ожидающих потоков 
 (2) инициализация объекта с указанием максимального значения внутреннего счетчика 
 (3) инициализация объекта с указанием начального состояния внутреннего счетчика 
 (4) инициализация объекта с указанием минимального значения внутреннего счетчика 
Номер 3
Освобождение или захват семафора приводит к исключению в следующих случаях
Ответ:
 (1) при освобождении семафора значение внутреннего счетчика превысило заданное максимальное значение 
 (2) при захвате семафора значение внутреннего счетчика превысило заданное максимальное значение 
 (3) при захвате семафора значение внутреннего счетчика стало меньше заданного минимального значения 
 (4) освобождение и захват семафоров не приводит к исключениям 
Упражнение 6:
Номер 1
Сигнальные сообщения типа ManualResetEventSlim
позволяют:
Ответ:
 (1) реализовать взаимно-исключительный доступ к фрагменту кода 
 (2) реализовать доступ заданного числа потоков к фрагменту кода 
 (3) реализовать одновременный запуск всех заблокированных потоков 
 (4) реализовать запуск только одного из ожидающих потоков 
Номер 2
Сигнальные сообщения типа AutoResetEvent
позволяют:
Ответ:
 (1) реализовать взаимно-исключительный доступ к фрагменту кода 
 (2) реализовать доступ заданного числа потоков к фрагменту кода 
 (3) реализовать одновременный запуск всех заблокированных потоков 
 (4) реализовать запуск только одного из ожидающих потоков 
Номер 3
Сигнальные сообщения типа ManualResetEvent
позволяют:
Ответ:
 (1) реализовать взаимно-исключительный доступ к фрагменту кода 
 (2) реализовать доступ заданного числа потоков к фрагменту кода 
 (3) реализовать одновременный запуск всех заблокированных потоков 
 (4) реализовать запуск только одного из ожидающих потоков 
Упражнение 7:
Номер 1
Выберете правильные утверждения
Ответ:
 (1) конкурентные коллекции позволяют безопасно добавлять и удалять элементы при одновременной работе в нескольких потоках 
 (2) конкурентные коллекции, не содержащие элементов, блокируют текущий поток при выполнении операции извлечения элемента 
 (3) применение конкурентных коллекций идентично применению обычных коллекций с блокировками типа lock 
 (4) нет правильных ответов  
Номер 2
Выберете правильные утверждения
Ответ:
 (1) конкурентные коллекции эффективнее обычных коллекций только в случае параллельной работы 
 (2) конкурентные коллекции функционируют как обычные коллекции при однопоточном использовании 
 (3) применение конкурентных коллекций идентично применению обычных коллекций с блокировками типа lock
 
 (4) нет правильных вариантов 
Номер 3
Конкурентные коллекции типа ConcurrentStack<T>, ConcurrentQueue<T>, ConcurrentBag<T>
можно создавать:
Ответ:
 (1) все конкурентные коллекции можно создавать на базе соответствующих коллекций (ConcurrentStack<T>
только на базе Stack<T>)
 
 (2) на базе объектов любых типов, реализующих интерфейс IEnumerable
 
 (3) конкурентные коллекции нельзя создавать на базе других объектов 
 (4) нет правильных ответов 
Упражнение 8:
Номер 1
Вызов метода CompleteAdding
для объекта типа BlockingCollection<T>
приводит к:
Ответ:
 (1) блокировке текущего потока 
 (2) генерации исключения при добавлении элементов 
 (3) генерации исключения при извлечении элемента вне зависимости от числа элементов в коллекции 
 (4) освобождению потоков, заблокированных операцией извлечения элементов из пустой коллекции 
Номер 2
При выполнении операции добавления Add
для объекта типа BlockedCollection<T>
, содержащего максимальное число элементов и без вызова CompleteAdding
, происходит:
Ответ:
 (1) блокировка текущего потока 
 (2) метод возвращает null
 
 (3) генерируется исключение 
 (4) нет правильного ответа 
Номер 3
Операция извлечения Take
для объекта типа BlockedCollection<T>
, не содержащего элементы и без вызова CompleteAdding, приводит
Ответ:
 (1) блокировка текущего потока 
 (2) метод возвращает null
 
 (3) генерируется исключение 
 (4) метод возвращает false