Цель - изучить модель программирования языка MC# и его специфические конструкции: async- и movable-методы, каналы, обработчики и связки
Высокоуровневый язык параллельного, распределенного программирования MC# предназначен для написания программ, работающих на всем спектре параллельных архитектур - от многоядерных процессоров до Grid-сетей. В случае, когда параллельная программа разрабатывается для исполнения на кластерах или Grid-сети, то она называется параллельной, распределенной программой.
Для исполнения MC#-программ, на машинах должна быть установлена среда исполнения CLR (Common Language Runtime) с соответствующим набором библиотек. На машине с операционной системой Windows, реализацией такой системы является Microsoft .NET Framework, а на машинах с операционной системой Linux - система Mono (http://www.mono-project.com).
Ключевая особенность языка MC# заключается в добавлении к обычным, синхронным методам, так называемых "асинхронных" методов, которые отмечаются в MC#-программах ключевым словом async (а в случае распределенных программ - ключевым словом movable ). При их вызове, происходит порождение нового потока (thread), в котором выполняется вызванный асинхронный метод.
Взаимодействие асинхронных методов в MC#-программе осуществляется с помощью передачи сообщений с использованием специальных средств - каналов и обработчиков канальных сообщений, выделенных в специальные синтаксические категории языка MC#: channels и handlers, соответственно.
Задача 1. Оттранслировать и выполнить, задавая различные значения входного параметра, программу вычисления n-го числа Фибоначчи:

Трансляция MC#-программ осуществляется командой:
mcsc <имя программы>.mcs
Запуск на выполнение осуществляется
<имя программы> <входные параметры>
mono <имя программы>.exe <входные параметры>
Объяснить, почему при рекурсивных вызовах программы, необходимо создание новых объектов класса Fib.
Задача 2. Оттранслировать и выполнить модифицированный вариант программы вычисления чисел Фибоначчи с порогом для локального вычисления (см. текст программы ниже):

Если задание выполняется на машине, имеющей два или более ядра (процессора), то для входного параметра n = 40, подобрать оптимальное значение порога, при котором время исполнения программы будет наименьшим.
Задача 3. Оттранслировать и выполнить программу вычисления чисел Фибоначчи с линейным порождением рекурсивных вызовов:

Если задание выполняется на многоядерной (многопроцессорной) машине, то сравнить время выполнения данного варианта программы с вариантом из Задачи 2 при запуске с N = 40 и одинаковым порогом для обеих программ.
Объяснить полученное время выполнения для этих вариантов по сравнению друг с другом.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.