Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Вложений: 2
Позволяет создать динамично несколько потоков в программе.
procedure threads_start(Uid: Integer); Создает поток, заданный уникальным индетификатором, и ставит его в очередь потоков, после запуска, в основной программе вызывается thread_id(Uid: Integer) с Uid этого потока. Uid любое число. В дальнейшем используется для обработки данного потока. Внимание! Если повторно вызвать threads_start с таким же Uid, тогда, если поток Uid уже закончил работу будет создан новый поток с этим же Uid и повторно вызвана процедура-обработчик, в противном случае поток просто продолжит свою работу, а повторный запрос игнорируется. procedure threads_stop(Uid: Integer); Прерывает работу потока Uid. Работает только на части телефонов MIDP2.0/CLDC1.1, не рекомендуется к использованию, остановку производить из программы. procedure threads_stop_all(); Прерывает работу всех созданных потоков. Работает только на части телефонов MIDP2.0/CLDC1.1, не рекомендуется к использованию, остановку производить из программы. function threads_isactive(Uid: Integer): Integer; Возвращает состояние потока Uid. 1 - поток выполняется в данный момент. 0 - поток завершил работу, статус готов к удалению. -1 - поток удален или не существует. function threads_getpriority(Uid: Integer): Integer; Возвращает приоритет потока Uid. procedure threads_setpriority(Uid, priority: Integer); Устанавливает приоритет для потока Uid. Числовое представление значений приоритета потока. Для использования в get/setpriority: function threads_max: Integer; Максимальный приоритет. function threads_min: Integer; Минимальный. function threads_norm: Integer; Обычный. В основной код программы добавить! Процедура вызывается при запуске потока UId. PHP код:
PHP код:
|
Ответ: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
А можно увидеть рабочий пример использования библиотеки?
Тестировал на таком коде: PHP код:
Только почему-то обновляется только второй поток. На этой же логике тестировал свою библиотеку для реализации потоков - работало. |
Re: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Все правильно :) , забыл про особенность одну реализации потоков, у меня запуск потоков происходит из одного потока, они встают в очередь потоков и могут перебивать друг друга, особенно если вызывать их друг за другом. Добавлять Delay(100); и все OK! Исправлю позже чтоб не было коллизий, если конечно развитие этой библиотеки интересно.
Вставить delay() и все заработает: PHP код:
|
Ответ: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Библиотека интересная, сам давно писал нечто подобное, но тогда мне не удалось реализовать произвольное количество потоков.
Только небольшая просьба - старайтесь оформлять свои библиотеки в соответствии с правилами. |
Re: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Сорри что криво оформляю, вырываю из рабочих проектов по живому :)
|
Re: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Все подправил, Delay() можно не добавлять, перебивать друг друга больше не будут. Пример добавил.
|
Ответ: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Молодца. Чем создавать 10 процедур-обработчиков потоков, легче создать 1 толковый обработчик. Я вот только боюсь, что часть данных будет теряться из-за конфликта потоков, например, когда сортируешь один массив в два потока для скорости. В Java для этого есть хитрое словечко synchronized, а вот в MP нет возможности использовать синхронизацию.
|
Ответ: Lib_threads - динамические потоки (выполнение процедур в отдельных потоках, параллельно основной программе)
Вложений: 1
ну, в отличие от другой либы для потоков эта работает)))
но возник вопрос почему не пускаются потоки из модуля? в смысле вот так не работает: |
Часовой пояс GMT +4, время: 15:33. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot