My-library.info
Все категории

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

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе W Cat - Язык программирования Euphoria. Справочное руководство. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Язык программирования Euphoria. Справочное руководство
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
209
Читать онлайн
W Cat - Язык программирования Euphoria. Справочное руководство

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

W Cat - Язык программирования Euphoria. Справочное руководство - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
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. Справочное руководство - читать книгу онлайн бесплатно, автор W Cat

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

По старту программы исполняется единственная задача. Её номер равен 0, и изначально это задача общего времени, которой разрешен 1 запуск на task_yield(). Другие задачи не могут выполняться, пока задача номер 0 не выполнит task_yield().

Если задача номер 0 (высшего уровня) достигает конца главного файла, вся программа считается исполненной и останавливается, независимо от того, что другие задачи всё ещё могут быть активными.

Если диспетчер не находит активных задач, т.е. в программе не осталось задач, которые следует поставить вновь на выполнение (в плане нет даже задачи номер 0), он останавливает программу с кодом окончания 0, наподобие abort(0).

Пример:


-- Задача t1 будет выполнена до 10 раз подряд, прежде чем

-- другим задачам общего времени будет отдано управление. Если управление

-- требуется задаче реального времени, t1 потеряет управление в её пользу.

task_schedule(t1, 10)


-- Задача t2 будет выполняться некоторое время между 4-ой и 5-ой секундами,

-- наступившими после текущего момента. Если не изменить план для t2, она будет

-- запускаться через каждые 4..5 секунд и в дальнейшем.

task_schedule(t2, {4, 5})


См. также:

task_create, task_yield, task_suspend, task_suspend


task_self


Синтаксис:

a = task_self()

Описание:

Выдаёт номер текущей задачи.

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

Этот номер может понадобиться, если в задаче возникла необходимость перепланировать, приостановить или прекратить саму себя.

Пример:


-- перепланировать себя

task_schedule(task_self(), {5.9, 6.0})


См. также:

task_create, task_schedule, task_yield, task_suspend


task_status


Синтаксис:

i2 = task_status(a)

Описание:

Выдаёт код состояния задачи. Значения кода могут быть 1 (активна), 0 (приостановлена) и -1 (задача не существует).

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

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

Величина кода состояния -1 показывает, что задача никогда не существовала либо задача завершилась естественным путём, либо была прекращена.

Пример:


integer s


s = task_status(tid)

if s = 1 then

puts(1, "АКТИВНАn")

elsif s = 0 then

puts(1, "ПРИОСТАНОВЛЕНАn")

else

puts(1, "НЕ СУЩЕСТВУЕТn")

end if


См. также:

task_list, task_create, task_schedule, task_suspend


task_suspend


Синтаксис:

task_suspend(a)

Описание:

Приостанавливает выполнение задачи номер a.

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

Подача команды приостанавливает выполнение задачи номер a. Задача a не будет в дальнейшем выполняться, если для неё не будет снова подана команда task_schedule(). Номер a - это номер, который выдаёт функция task_create().

Любая задача может приостанавливать любую другую задачу. Если задача приостанавливает саму себя, остановка начнётся по вызову task_yield().

Пример:


-- приотановить задачу 15

task_suspend(15)


-- приостановить текущую задачу

task_suspend(task_self())


См. также:

task_create, task_schedule, task_self, task_yield


task_yield


Синтаксис:

task_yield()

Описание:

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

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

В задачах должен быть предусмотрен периодический вызов task_yield(), чтобы другие задачи получали шанс быть решёнными. Только если в задаче подана команда task_yield(), диспетчер получит управление над задачами. Эта схема осуществления многозадачности известна как кооперативная многозадачность.

Задача может иметь вызовы task_yield() во многих различных местах её кода, и на любой глубине вызова подпрограмм.

Диспетчер будет использовать текущую величину {min, max} или оставшееся текущее число последовательных вызовов, определяя, когда следует вернуться к текущей задаче.

Когда управление возвращается в задачу, её выполнение продолжается с команды, которая следует за task_yield(). Стек вызова и все частные переменные останутся теми, какими они были перед вызовом task_yield(). Глобальные и местные переменные могут измениться при выполнении других задач.

Задачи должны пытаться вызывать task_yield() достаточно часто, чтобы не затруднять попадание задач реального времени в их временные окна и не блокировать задачи общего времени на слишком большие периоды времени. С другой стороны, на вызов task_yield() тратится некоторое время, и это время слегка больше, когда имеет место действительное переключение на другую задачу.

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

Пример:


-- Из игры Language war.

-- Эта небольшая задача имитирует расходование запасов энергии

-- на корабле Euphoria и на его челноке.

-- Задача представляется "вечной" в бесконечном цикле,

-- но на самом деле это задача реального времени, которая вызывается

-- с периодом 1.7 - 1.8 секунды на протяжении всей игры.

-- Каждый раз при её вызове расходуется 3 или 13 единиц энергии.


global procedure task_life()

-- независимая задача: вычитание из запасов энергии

while TRUE do

if shuttle then

p_energy(-3)

else

p_energy(-13)

end if

task_yield()

end while

end procedure


См. также:

task_create, task_schedule, task_suspend task_suspend


text_color


Синтаксис:

include graphics.e

text_color(i)

Описание:

Устанавливает цвет символов текста. Увеличив i на 16, в некоторых графических режимах можно получить мерцающий текст заданного i цвета. См. в graphics.e список возможных цветов.

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

Текст, который вы печатаете на экране после вызова text_color(), будет иметь заданный цвет.

Когда ваша программа завершается, последний цвет, выбранный вами для текста и выводившийся на экран, сохраняется в действии. Поэтому вам может понадобиться напечатать что-то, можно просто 'n', в белом цвете (WHITE), чтобы восстановить белый цвет текста операционной системы, особенно, если курсор находится в нижней строке экрана в готовности к прокрутке вверх.

Пример:


text_color(BRIGHT_BLUE)


См. также:

bk_color


text_rows


Платформа:

DOS32, WIN32

Синтаксис:

include graphics.e

i2 = text_rows(i1)

Описание:

Устанавливает число строк на экране в текстовом режиме, если заданное значение i1 возможно. i2 принимает значение действительного нового числа строк.

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

Число строк 25, 28, 43 и 50 поддерживается большинством видеоплат.

См. также:

graphics_mode


tick_rate


Платформа:

DOS32

Синтаксис:

include machine.e

tick_rate(a)

Описание:

Задаёт число прерываний в секунду от таймера. Тем самым устанавливается точность библиотечной функции time() и частота дискретизации при профилировании времени.

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

tick_rate() игнорируется под WIN32 и Linux/FreeBSD. Дискретность счёта времени под WIN32 всегда равна 100 прерываниям в секунду.

На PC прерывания от таймера идут обычно с частотой 18.2 прерываний в секунду. tick_rate() позволяет вам увеличить эту частоту, но не уменьшить её.

tick_rate(0) восстановит нормальную частоту 18.2. Euphoria восстанавливает нормальную частоту автоматически при завершении вашей программы, даже при аварийной остановке по обнаруженной ошибке.

Когда программа исполняется в окне DOS с частотой таймера иной, чем 18.2, функция time() не будет убегать вперед, если данное окно не является активным окном.


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Язык программирования Euphoria. Справочное руководство, автор: W Cat. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.