|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Собссно вопрос, как правильно сделать у меня есть вызов, он возвращает лист футур. я эти футуры разворачиваю, и далее через форыч мне с данными из каждой футуры надо сходить на сторонний сервис кое-что забрать. так вот, если я сделаю просто форыч по листу футур с вызовами на сторонний сервис (который тоже футуру возвращает) у меня всё это вылетает скажем так, параллельно это круто, но сторонний сервис валится типа ту мени реквестс. да и мне столько не надо. ну и вопрос, как мне заставить эти футуры выстреливать порционно. хотя бы. я могу впилить Thread.sleep(t) внутрь форыча и будет то, что я хочу. Но мне что-то подсказывает, что есть более правильное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 09:44 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
andreykaTсторонний сервис (который тоже футуру возвращает)http сервис что возвращает? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 09:49 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
вот вот это вот: someService.inquiry(res.data) возвращает футуру и фигачит мешок потоков в параллели которые параллельно же долбятся на удаленный сервис. форыч можно заменить на мап если сильно жгет что возвращает юнит ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 09:53 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Petro123andreykaTсторонний сервис (который тоже футуру возвращает)http сервис что возвращает? он возвращает какой-то объект который кладется в базу. или не кладется если не возвращает. это задание для шедулера. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 09:53 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Future должна предоставить тебе готовый результат. Если тебе еще надо куда-то сходить чтобы его уточнить - то это хреновый Future и неправильно ты задизайнил. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 11:17 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
мне от футуры вообще ничего не надо. мне надо чтоб у меня всё исполнилось в одном потоке последовательно вот и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 11:46 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Капец ты противоречивый Определись что тебе. Мультипоточка или event-driven. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 11:52 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
andreykaTмне от футуры вообще ничего не надо. мне надо чтоб у меня всё исполнилось в одном потоке последовательно вот и всё.foreach в одном потоке ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 12:04 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
andreykaTу меня есть вызов, он возвращает лист футурчем плохо в одном потоке синхронно ждать результаты сервиса? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 12:06 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 12:46 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
betelgeizex https://notepad.mmakowski.com/Tech/Scala Futures on a Single Thread это не оно? Правильно. Для выполнения Future у тебя должен быть ExecutionContext, по дефолта это форкджойн пул, тебе надо создать однопоточный экзекьютор. ExecutionContext это Аля паттерн стратегия для многопоточных вычислений в скала. А по православному надо взять Task из scalaz или monix или zio. А код должен ожидать некую монаду, описывающую вычисления, так ты сможешь не только описать стратегию, но и вызвать выполнение когда угодно и даже резать код. В случае future исполнение начинается сразу и ты не сможешь их реюзать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 20:26 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
При слове "монада" никому не стало плохо в аудитории? Это знаешь как прийти в ПТУ и электро-механикам читать лекцию о квантовой механике :)) Ну правда зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 20:48 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Тебе жалко штоле пусть будет монада. Говори проще просто. Монада это такая обёртка вокруг объекта которая даёт тебе выстраивать некую последовательность действий. Вот и все. Или ты думаешь что в ПТУ только отсталые учатся? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 22:52 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Petro123andreykaTу меня есть вызов, он возвращает лист футурчем плохо в одном потоке синхронно ждать результаты сервиса? Ты про асинк авайт? Или про онкомплит? Онкомплит да, тут всё решает. Ну почти. У тебя может запустить шедулер мешок задач и они будут бежать параллельно. Впрочем это лучше чем фейерверк потоков в любом случае. Как сделать чтоб шедулер не смог запустить таску ещё раз пока все активности предыдущей не закончились я пока не откопал ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 22:56 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Petro123andreykaTу меня есть вызов, он возвращает лист футурчем плохо в одном потоке синхронно ждать результаты сервиса? Ожиданием ты занимаешь поток, который мог бы делом заняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2019, 23:23 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
fixxerОжиданием ты занимаешь поток, который мог бы делом заняться.правильно. Значит нужно всего лишь два потока, чтобы освободить основной. Ни 10, ни пять, ни пул потоков. А всего фоновый поток и в нем цикл for к примеру. Это исходя из ТЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 06:59 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
andreykaTТебе жалко штоле пусть будет монада. Говори проще просто. Монада это такая обёртка вокруг объекта которая даёт тебе выстраивать некую последовательность действий. Вот и все. Или ты думаешь что в ПТУ только отсталые учатся? Ну дай бох. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 11:03 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
короче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 11:20 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
andreykaT, Ну если нужна очередность, а не параллельность то все верно. И очередь тоже лишняя теоретически. Но практически зависит от фреймворка. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 11:39 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Дык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков. Зачем так сделано. Какие там best-practices. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 12:00 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
maytonДык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков. Зачем так сделано. Какие там best-practices. Согласен. Но невозможно последовательную задачу делать на акторах и параллельности. Чтобы "задачи друг на друга не наслаивались")). Например, есть 50 растров и нужно скачать с сервисов ПАРАЛЛЕЛЬНО. Далее событие на основной поток что все 50 скачаны. Ранее не нужно ничего делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 12:14 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
Petro123maytonДык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков. Зачем так сделано. Какие там best-practices. Согласен. Но невозможно последовательную задачу делать на акторах и параллельности. Чтобы "задачи друг на друга не наслаивались")). Например, есть 50 растров и нужно скачать с сервисов ПАРАЛЛЕЛЬНО. Далее событие на основной поток что все 50 скачаны. Ранее не нужно ничего делать. Да. Но Андрейка нам поставил задачу в терминах "футуры", "форыч". Что мы можем с этого вынести? Есть просто его персональные пожелания. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 12:23 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
потому что в плее всё возвращает футуры. ну, практически всё. принтлн не возвращает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 12:38 |
|
И снова скала немного многопоточки
|
|||
---|---|---|---|
#18+
я читаю с базы - получаю футуру. иду с этими данными на вебклиент - снова получаю футуру. сохраняю результат - и тут футура. причем вторая не будет работать без данных первой а третья без второй. выходит матрёшка. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2019, 12:40 |
|
|
start [/forum/topic.php?fid=59&msg=39791216&tid=2121407]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 344ms |
total: | 495ms |
0 / 0 |