Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Создание фоновой задачи или асинхронное выполнение функции #489

Closed
Denotop opened this issue Jul 25, 2017 · 14 comments

Comments

@Denotop
Copy link

Denotop commented Jul 25, 2017

Не хватает фоновых задач.
Конечно можно несколько раз вызвать через командную строку, но в нее не очень удобно передавать параметры.

@artbear
Copy link
Collaborator

artbear commented Jul 25, 2017

Все решается через объекты/классы/библиотеки.

посмотри примеры реализаций в репо библиотек из https://github.com/oscript-library

@EvilBeaver
Copy link
Owner

А зачем фоновые? Что хотите ими сделать?

@Denotop
Copy link
Author

Denotop commented Jul 25, 2017

ну например запрос на TCPСервер обрабатывать в фоновом задании

@EvilBeaver
Copy link
Owner

@Denotop а в основном потоке при этом что делать?

@Denotop
Copy link
Author

Denotop commented Jul 25, 2017

это на усмотрения программиста, можно ожидать результат выполнения фонового задания
можно завершить выполнения скрипта, не дожидаясь выполнения фонового задания

@EvilBeaver
Copy link
Owner

EvilBeaver commented Jul 25, 2017

Я и спрашивал: "Что конкретно надо сделать с помощью фоновых"? Если результат ожидать, то зачем тогда фоновое? А если скрипт завершать, то кто будет довыполнять фоновое?

@nixel2007
Copy link
Collaborator

Если результат ожидать, то зачем тогда фоновое?

Параллельная обработка?

@EvilBeaver
Copy link
Owner

Ну вот сделает Никита лямбды, их можно будет использовать в качестве THREADFUNC

@nixel2007
Copy link
Collaborator

Не совсем уловил связи. Ты хочешь сказать, что передача аргументов в лямбда-функцию технически похожа на передачу аргументов в новый поток? Лямбды же живут в потоке родителя, общая память, область видимости (ну, почти)

@EvilBeaver
Copy link
Owner

/all ну таки и что с этой задачей? @Denotop можешь набросать короткий пример кода реальной задачи, как будто фоновые существуют?

@k4rimov
Copy link

k4rimov commented Dec 17, 2017

Фоновые нужны, точнее потоки.
Например создать массив Потоков загрузки по http. Реальный пример - на входе есть список ссылок на mp3 файлы (неважно откуда они прилетели). Закидываем их в массив.
Создаем потоковую функцию - суть которой скачать данные по ссылке (подается на вход функции).

Здесь главный поток - создает и подготавливает данные (список ссылок), создает 3-5 потоков в цикле. И раздает на эти потоки ссылки и запускает очередную сессию потоковой функции на выполнение.
Главный поток обрабатывает результаты потоковых функций, следит за прогрессом, рестартует потоковую функцию заново если где-то сбой/таймаут и т.п.

Итого: скачивать в один поток много быстрее чем в однопоточном режиме. То же относиться и к остальным областям: копирование файлов, обработка каталогов, поиск файлов, решение кроссворда..
Код движка, конечно же, должен обеспечивать такой функционал. Заранее нужно думать о синхронизации потоков, приостановки и возобновлении.

@khorevaa
Copy link
Contributor

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

@artbear
Copy link
Collaborator

artbear commented Dec 18, 2017

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

@artbear
Copy link
Collaborator

artbear commented Mar 17, 2021

Дубль задачи #764
правда, та позже появилась )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants