Na takim talku Martina Thompsona, mówił że właśnie najlepsze jest podejście z jednym wątkiem, czyli worker który powoduje zmianę i np core.asyncowy kanał do którego się wrzuca zmiany.
Mówił tak dlatego że persistent data structure tak na prawdę nie są dobre do modyfikacji przez różne wątki jednocześnie, bo i tak po drodze musi gdzieś wystąpić lock (przy kopiowaniu częściu struktury).
Znaczy póki wszystko masz w jednym agencie, to nic nie jest modyfikowane jednocześnie chyba, więc tej części problemu nie ma. I w sumie zastanawiam się czemu trzeba by było lockować tą strukturę, skoro częścią persistent data structures jest to, że nigdy się w nich nic nie zmienia, najwyżej dochodzi nowe. Ale zobaczyłem że to koleś od LMAX disruptora, to pewnie nie gada takich rzeczy bez pokrycia.
Aczkolwiek też motyw z core.async + worker wydaje mi się chyba lepszy
Zalezy w sumie jak bardzo zależy na parallelismie