Sto facendo fatica a trovare soluzioni a un problema che trovo in un sistema concorrente (attualmente sto utilizzando il Modello attore). Fondamentalmente ho una struttura diamantata di attori:
QuindiD
inviamessaggiaC
eB
,chediconseguenzainvianomessaggiaA
.Ogniparteesegueunaqualcheformadioperazionedopoaverricevutounmessaggio.
Adesempio,definiscialcuneoperazioniarbitrarie,adesempio:
- D:generaunnumerocasuale
- C:applicaf(x)=x-1
- B:applicaf(x)=2x
- A:applicaf(c,b)=(c+b)/2,dovec,bsonoirisultatidi
C
,B
DopocheA
applicalasuaoperazione,pubblicailrisultato.OravoglioA
pubblicaresolounrisultato,seharicevutoilrisultatosiadiB
siadiC
perunparticolaremessaggiodaD
.Quindiseavessimounindiceincrementaleiegeneriinumerix_i,vogliosoloA
peroperaresuc_k,b_jsek==j.
Unaproprietàdelmiosistemacherendequestoproblemaunpo'piùdifficileèl'esistenzadellalimitazione.Leoperazionipossonoesserecostosee/olafrequenzaconcuiD
inviamessaggipuòessereelevata,quindiperevitarechelecodecrescanoall'infinito,ciòsembranecessario.Misembracheciòeliminerebbequalsiasisoluzionedelmodulo"contrassegna il messaggio da D
e esegua solo in A
se ha ricevuto 2 messaggi con lo stesso marchio", poiché non posso garantire di riceverli mai 2 messaggi.
La mia esperienza in questo settore è abbastanza limitata, quindi qualsiasi risorsa o modello che si occupi di un problema simile come questo sarebbe utile.