использовать.
Идея как хотелось бы сделать: есть стрим, который бежит и в мапу копим stateful состояние стрима, можно ли сделать параллельный процес который будет брать эту мапу с состоянием, писать ее куда надо, но чтобы на это время записи чтение стрима не остановилось, а продолжало собирать stateful мапу
А по завершению записи паралелльной функции она опять брала мапу и записывала и так бесконечно
Это можно вообще сделать?
https://typelevel.org/cats-effect/docs/std/ref
нужно fs2/zio-strems, можно имплементировать на стандартных комбинаторах, без Ref. Вручную на футурах будет немного тяжко
Самый тупой способ - держать мапу неизменяемой и при создании каждой новой мапы - менять ссылку на последнюю версию в AtomicReference. В параллельном потоке в цикле читать и на каждое изменение писать куда надо. Способ несколько умнее - в качестве стрима использовать akka stream, одним шагом аггрегировать мапу и отдавать новое состояние далье, следующим шагом писать. Между шагами - async и дропающий буфер. Способ несколько лучше - fs2/zio-stream с соответствующими механизмами там.
даже мапу не обязательно мутабельной делать
Обсуждают сегодня