Fork me on GitHub
#clojure-poland
<
2015-11-25
>
nooga15:11:32

ja mam w sumie troche suchar teraz bo mam sobie wektor recordow w atomie i miliard threadow, ktore sie interesuja mutowaniem tych recordow

nooga15:11:16

i chcialbym zeby robily to atomicznie, t.j. sprawdz jeden rekord i ewentualnie zmień go

nooga15:11:48

ale nie chce synchronizować na całym atomie, tylko na poszczególnych rekordach tak naprawdę

nooga15:11:12

i nie mam pomysłu jak to elegancko rozwiązać

jaen15:11:53

Rozumiem że baza danych nie jest tutaj rozwiązaniem z jakiegoś powodu?

nooga15:11:38

to jest rozwiązanie na bazę poniekąd

nooga15:11:51

mam bazę, która nie ma czegoś takiego jak explicit locking

nooga15:11:08

więc mam do niej właśnie taki interface

nooga15:11:57

co niespecjalnie mi się podoba ale tak już musi być

jaen15:11:23

Ale w8, to jak to działa, że masz atom, na którym masz watcha. Dostęp do atomu serializuje Ci operacje na tych rekordach i w tym watchu update'ujesz bazę?

nooga16:11:17

no w gruncie rzeczy tak

nooga16:11:15

ale te operacje mogą być serializowane per record zamiast per baza

nooga16:11:41

więc właśnie myślę co tu zrobić bo i tak trochę to jest takie he he na pałę

jaen16:11:27

No niby możesz każdy rekord wsadzić w atom

jaen16:11:31

Ale wtedy będzie duuużo watchy

jaen16:11:41

Może wrzucać operację na kanał z core.async a po drugiej stronie mieć workerów i się tylko upewnić że dwóch workerów nie weźmie jednocześnie operacji dla tego samego rekordu

nooga16:11:54

tak tez myslalem, ale chcialbym odbierac rezultaty w tych roznych threadach

nooga16:11:38

bez pisania jakiejs hardkorowej instalacji

nooga16:11:06

no bo moglbym w sumie wyslac “query” i channel zwrotny a pozniej sobie !!< z niego

jaen16:11:11

No ale właśnie po to te workery, żebyś mógł modyfikować rekordy jednocześnie.

jaen16:11:15

Albo hm, zawsze są agenty

jaen16:11:22

Każdy rekord mógłby być agentem.

nooga16:11:35

o, w sumie nigdy ich nei uzywalem

nooga17:11:08

tylko kurde jak bede trzymal jakas kolekcje tych rekordow to i tak bede derefowal atom z nimi

jaen18:11:42

No jeżeli to są agenty to nie musisz

jaen18:11:03

No chyba że dodawnai nowych rekordów, to w sumie

jaen18:11:15

Ale to wtedy tą listę też zrób agentem może? xD