Processing:Справочник языка Processing/thread(): различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 2: | Строка 2: | ||
{{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>= | ||
Строка 67: | Строка 67: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 87: | Строка 87: | ||
|Высота логотипа издателя для schemaNewsArticle=45 | |Высота логотипа издателя для schemaNewsArticle=45 | ||
}} | }} | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Processing}} | ||
Версия от 12:12, 20 мая 2023
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
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");
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |