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

2.16 Многозадачность

2.16 Многозадачность

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

Демонстрационная игра The Language War, lw.ex, широко использует механизм многозадачности для создания модели боя, в котором участвуют многочисленные независимо движущиеся корабли, торпеды, фазоры и т.д. Просмотрите также демо-программу taskwire.exw для Windows, и демо-программу news.exu для Linux и FreeBSD.

task_clock_start (задача_часы_старт)

- перезапускает часы диспетчера задач

task_clock_stop (задача_часы_стоп)

- останавливает часы диспетчера задач

task_create (задача_новая)

- создаёт новую задачу

task_list (задача_список)

- выдаёт список всех задач

task_schedule (задача_план)

- задаёт диспетчеру план решения задачи

task_self (задача_какая)

- выдаёт идентификатор текущей задачи (номер)

task_status (задача_состояние)

- выдаёт текущее состояние задачи (активна, приостановлена, прервана)

task_suspend (задача_стоп)

- приостанавливает решение задачи

task_yield (задача_другая)

- управление задачами передаётся диспетчеру, запускающему на исполнение другую задачу.

...

Оглавление книги


Генерация: 0.709. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз