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

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

Команды task_clock_stop() и task_clock_start() предназначены для приостановки и возобновления выполнения задач реального времени.

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

Задачи общего времени при этом не затрагиваются.

Пример:


-- приостановить игру, пока игрок отвечает на телефонный звонок

task_clock_stop()

while get_key() = -1 do

end while

task_clock_start()


См. также:

task_clock_stop, task_schedule, task_yield, task_suspend


task_clock_stop


Синтаксис:

task_clock_stop()

Описание:

Останавливает часы диспетчера, ответственные за выполнение плана задач реального времени. Выполнение плана возобновится по команде task_clock_start(). Задачи общего времени могут продолжать выполняться. Текущая задача также может продолжать выполняться, но если это задача реального времени, управление от неё будет передано диспетчеру.

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

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

Функция time() этой командой не затрагивается, команда действует только в отношении часов диспетчера многозадачности Euphoria.

См. также:

task_clock_start, task_schedule, task_yield, task_suspend


task_create


Синтаксис:

a2 = task_create(i1, s)

Описание:

Оформляет заданную процедуру как новую задачу для передачи её диспетчеру многозадачности. Аргумент i1 представляет собой номер процедуры Euphoria, составляющей новую задачу. Ряд s - это список аргументов, которые будут поданы в процедуру-задачу, когда начнётся её исполнение. Выдаваемый результат, a2, является номером задачи, под которым она будет фигурировать в системе многозадачности Euphoria.

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

Функция task_create() позволяет оформить новую задачу, но не запускает её на исполнение.

Каждая из задач имеет свой набор частных переменных и свой собственный стек вызова. Глобальные и местные переменные действуют для всех задач.

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

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

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

Каждая задача имеет уникальный номер. Функция 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

Язык программирования 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 имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных

Похожие книги

Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT