Processing:Справочник языка Processing/thread(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
{{Processing панель перехода}}
{{Processing панель перехода}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}


= thread() <ref>[https://processing.org/reference/thread_.html processing.org - thread()]</ref>=
= thread() <ref>[https://processing.org/reference/thread_.html processing.org - thread()]</ref>=
Строка 66: Строка 64:


=См.также=
=См.также=


=Внешние ссылки=
=Внешние ссылки=


<references />
<references />
{{SEO
 
|Заголовок статьи=Processing: thread() / Онлайн справочник - wikihandbk.com
|Ключевые слова=processing, thread()
|Описание статьи= Скетчи Processing выполняют определенную последовательность шагов: сначала setup() затем в бесконечном цикле выполняют функцию draw(). Поток представляет собой последовательность шагов с началом, серединой и концом. Скетч Processing представляет собой один поток, часто называемый потоком анимации. Другие потоки, могут выполняться независимо от основного цикла анимации. Фактически, можно запускать любое количество потоков одновременно, и все они будут выполняться параллельно. Не рекомендуется вызывать из функции thread() функции рисующие на экране. Поскольку поток выполняется независимо, код не будет синхронизирован с потоком анимации, что приведет к странным или по крайней мере несогласованным результатам. Используйте thread() для загрузки файлов или выполнения других задач, для которых требуется время. После завершения задания установите переменную, указывающую, что задача завершена, и проверяйте ее внутри функции draw(). Processing использует потоки довольно часто, например с библиотечными функциями, такими как captureEvent() и movieEvent(). Эти функции инициируются другим потоком, работающим за кулисами, и они предупреждают Processing, когда у них есть сообщить. Это полезно, когда необходимо выполнить задачу, которая занимает слишком много времени и замедлит частоту кадров основной анимации, например захват данных из сети. Если отдельный поток застревает или возникла ошибка, вся программа не будет остановлена, а только отдельный поток. Написание собственного потока может быть сложным процессом, связанным с расширением класса Thread в Java. Тем не менее метод thread() - быстрый и грязный способ реализации простого потока в Processing. При передаче строки, совпадающей с именем функции, объявленной в другом месте скетча, Processing будет выполнять эту функцию в отдельном потоке.
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Processing:Справочник языка Processing/thread()</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Ширина изображения статьи для schemaNewsArticle=
|Дата публикации для schemaNewsArticle=2017-07-08
|Автор=Мякишев Е.А.
|Издатель=myagkij
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki>
|Ширина логотипа издателя для schemaNewsArticle=60
|Высота логотипа издателя для schemaNewsArticle=45
}}
{{Навигационная таблица/Портал/Processing}}
{{Навигационная таблица/Портал/Processing}}

Текущая версия от 08:22, 3 сентября 2023

Проверка/Оформление/Редактирование: Мякишев Е.А.


thread() [1]

Обозначение

thread()

Описание

Скетчи Processing выполняют определенную последовательность шагов: сначала setup() затем в бесконечном цикле выполняют функцию draw(). Поток представляет собой последовательность шагов с началом, серединой и концом. Скетч Processing представляет собой один поток, часто называемый потоком анимации. Другие потоки, могут выполняться независимо от основного цикла анимации. Фактически, можно запускать любое количество потоков одновременно, и все они будут выполняться параллельно.

Не рекомендуется вызывать из функции thread() функции рисующие на экране. Поскольку поток выполняется независимо, код не будет синхронизирован с потоком анимации, что приведет к странным или по крайней мере несогласованным результатам. Используйте thread() для загрузки файлов или выполнения других задач, для которых требуется время. После завершения задания установите переменную, указывающую, что задача завершена, и проверяйте ее внутри функции draw().

Processing использует потоки довольно часто, например с библиотечными функциями, такими как captureEvent() и movieEvent(). Эти функции инициируются другим потоком, работающим за кулисами, и они предупреждают Processing, когда у них есть сообщить. Это полезно, когда необходимо выполнить задачу, которая занимает слишком много времени и замедлит частоту кадров основной анимации, например захват данных из сети. Если отдельный поток застревает или возникла ошибка, вся программа не будет остановлена, а только отдельный поток.

Написание собственного потока может быть сложным процессом, связанным с расширением класса Thread в Java. Тем не менее метод thread() - быстрый и грязный способ реализации простого потока в Processing. При передаче строки, совпадающей с именем функции, объявленной в другом месте скетча, Processing будет выполнять эту функцию в отдельном потоке.

Синтаксис

thread(name)

Параметры

name - тип String: название функции, которая будет выполняться в отдельном потоке.

Возвращаемое значение

void

Пример

String time = "";

void setup() {
  size(100, 100);
}

void draw() {
  background(0);
  // Каждые 30 кадров запрашивать новые данные
  if (frameCount % 30 == 0) {
    thread("requestData");
  }
  text(time, 10, 50);
}

// Это происходит в отдельном потоке и может занять столько времени, сколько потребуется
void requestData() {
  JSONObject json = loadJSONObject("http://time.jsontest.com/");
  time = json.getString("time");
}

См.также

Внешние ссылки