W Cat - Язык программирования Euphoria. Справочное руководство

Здесь есть возможность читать онлайн «W Cat - Язык программирования Euphoria. Справочное руководство» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования Euphoria. Справочное руководство: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования Euphoria. Справочное руководство»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».
Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.
[Материал из Википедии]

Язык программирования Euphoria. Справочное руководство — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования Euphoria. Справочное руководство», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

При обнаружении ошибки во время исполнения, отчёт будет включать информацию по всем задачам, с ошибочной задачей, идущей в списке первой.

Может быть создано несколько задач, все из которых основаны на одной и той же процедуре, возможно, с различными аргументами.

Задача не может иметь в основе функцию, так как нет возможности использования результата, выдаваемого функцией.

Каждая задача имеет уникальный номер. Функция task_create() никогда не выдаёт повторный номер задачи, как это было ранее. Номера задач являются атомами с величиной вплоть до наибольшей доступной целочисленной величины (15 цифр).

Пример:

mytask = task_create(routine_id("myproc"), {5, 9, "ABC"})

См. также:

task_schedule, task_yield, task_suspend, task_self

task_list

Синтаксис:

s = task_list()

Описание:

Выдаёт ряд, содержащий номера всех активных или приостановленных задач.

Комментарии:

Эта функция позволяет вам определить, какие задачи существуют в данный момент. Номера задач, которые были прекращены, в ряд не включаются. Вы можете уточнить состояние конкретной задачи, подав её номер в функцию task_status().

Пример:

sequence tasks

tasks = task_list()

for i = 1 to length(tasks) do

if task_status(tasks[i]) 0 then

printf(1, "задача %d активна\n", tasks[i])

end if

end for

См. также:

task_status, task_create, task_schedule, task_yield, task_suspend

task_schedule

Синтаксис:

task_schedule(a, x)

Описание:

Включает задачу номер a в план диспетчера, задаваемый аргументом x. Аргумент a должен быть получен как результат из функции task_create(). Если x является положительным атомом, это означает, что задача a является задачей общего времени и диспетчер должен x раз подряд обеспечить её выполнение, прежде чем перейти к другим задачам. Если x является рядом, это должен быть двухэлементный ряд {min, max}, в котором оба элемента больше нуля или равны нулю, а min и max дают минимальное и максимальное время, в секундах, которое необходимо выждать перед исполнением задачи реального времени a. Величины min и max также устанавливают временной интервал между последовательными запусками задачи a, если он не будет изменён повторным вызовом task_schedule() или task_suspend().

Комментарии:

Диспетчер задач, встроенный в систему исполнения программы Euphoria, будет использовать аргумент плана x как руководство к действию при работе с данной задачей. Может случиться так, что не всегда окажутся возможными заданное число последовательных запусков или заданные временные рамки задачи. Например, задача может решаться так долго перед отдачей управления диспетчеру, что другая задача не получит заданного временного окна.

Задачи реального времени имеют более высокий приоритет. Задачи общего времени выполняются, когда нет задач реального времени, готовых к выполнению. Задача может переключаться между режимами выполнения реального и общего времени. Это всё зависит от последнего вызова task_schedule() для данной задачи. Диспетчер никогда не запустит задачу реального времени до открытия её временного окна (величина min), и он пытается не допустить пропуска временного окна (величина max).

Чтобы повысить точность временных рамок, вы можете задать одну и ту же величину для min и для max. Тем не менее, задавая некоторый промежуток, вы добавляете диспетчеру гибкости. Это позволяет ему выполнять план задач более эффективно, избегая непродуктивных задержек. Когда диспетчеру требуется задержка, он вызывает sleep(), если задержка не слишком короткая. Использование sleep() позволяет операционной системе выполнять другие программы.

Величины min и max могут быть дробными. Если величина min меньше, чем разрешение часов диспетчера (в настоящее время 0.01 секунды под Windows и Linux/FreeBSD, и 0.55 секунды под DOS, если не вызывалась tick_rate()), точное диспетчирование не может быть выполнено, но диспетчер будет пытаться запустить задачу несколько раз подряд, чтобы приблизиться к заданному плану. Например, если вы задали время min равным 0.002 секунды, диспетчер будет пытаться запустить вашу задачу .01/.002 = 5 раз подряд, прежде чем ждать следующего тика часов через .01 секунды. Во время следующих 0.01 секунды он будет выполнять вашу задачу ещё (до) следующих 5 раз и так далее, считая, что ваша задача может быть завершена 5 раз за один тик его часов.

Для задач общего времени увеличение аргумента x будет увеличивать процент времени процессора, отдаваемого для выбранной задачи, при уменьшении этого процента для других задач общего времени. При этом эффективность программы в целом возрастёт, так как каждое переключение задач само по себе требует некоторого небольщого времени. Вызов task_yield(), когда та же самая задача продолжает выполняться, занимает меньше времени. Тем не менее, данный приём не всегда применим, так как может блокировать выполнение других задач общего времени на длительные периоды времени. Имейте в виду, что задачи реального времени всегда имеют приоритет перед любым task_yield(), если достигнуто время их активации.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования Euphoria. Справочное руководство»

Представляем Вашему вниманию похожие книги на «Язык программирования Euphoria. Справочное руководство» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Александр Цветков
Отзывы о книге «Язык программирования Euphoria. Справочное руководство»

Обсуждение, отзывы о книге «Язык программирования Euphoria. Справочное руководство» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x