Расположите в порядке увеличения степени абстракции технологии высокопроизводительных вычислений:
Что показывает закон Амдала:
Как называются функции, внутри которых, в зависимости от используемой технологии, происходит проверка на необходимость завершения работы потока и по результатам проверки возможно выкидывание исключений или завершение потока с применением стека зарегистрированных функций:
Чем отличается spin mutex от обычного mutex:
В каком состоянии находится примитив синхронизации (mutex) в приведённом коде на 1, 3 и 4 строках:
0: boost::unique_lock<boost::mutex> lock(mutex); 1: 2: while (messageQueue.empty()) 3: conditionVariable.wait(lock); 4:
Расположите алгоритмы синхронизации в порядке увеличения потенциальной производительности в жёсткой конкурентной среде:
Отметьте вид алгоритмов синхронизации, обычно реализуемый на CAS-операциях и позволяющий добиться максимальной независимости исполнения потоков, гарантируя общий прогресс системы:
Выберите корректное определение wait-free класса алгоритмов:
Какая ошибка потенциально может возникнуть в приведённом коде:
void f() { first_mutex.lock(); second_mutex.lock(); ... } void g() { second_mutex.lock(); first_mutex.lock(); ... }
Почему lock-free алгоритмы легче реализовать на языке со сборщиком мусора, нежели на нативных языках, например C++:
Укажите какие виды профилирования желательно применить для комплексного анализа проблем приложения:
Укажите, какой шаблон проектирования позволяет повторно использовать один и тот же вычислительный поток для решения нескольких задач и минимизировать время на создание новых потоков:
Укажите, какой шаблон проектирования позволяет эффективно организовать потоковую обработку данных:
В чём заключается одна из основных причин просадки производительности (увеличение времени выполнения операции) при активной конкурентной работе с контейнерами (в предположении, что процессорных ресурсов достаточно):
Выберите технологию, предоставляющую инструменты работы в терминах задач, скрывая вычислительные потоки внутри:
Выберите технологию, для которой характерна адресация в терминах групп и коммуникаторов, с возможностью создания виртуальных топологий:
Выберите оптимизацию JIT-компилятора, которая позволяет уменьшить время, затрачиваемое на захват и освобождение примитива синхрониации, не переходя в некоторых случаях в kernel space:
Выберите модель памяти, которая гарантирует acquire/release семантику доступа к памяти:
Выберите тип ввода/вывода, наиболее подходящий для реализации высоко нагруженных серверных частей системы:
Какое консенснусное число CAS-операций: