Ho pensato, mi piacerebbe poter assegnare diversi messaggi a diverse priorità quando si parla di un processo di erlang.Esiste un modo intelligente per dare ai messaggi priorità diverse?
Vorrei essere in grado di gestire prima i messaggi con priorità alta e quindi con priorità bassa una volta.
ho provato diversi approcci, approccio 1:
loop() ->
receive
{high, Msg} ->
Do something with the message,
loop()
after 0 ->
ok
end,
receive
{low, Msg} ->
Do something with the message,
loop()
after 0 ->
loop()
end.
Questo fa il lavoro, ma è tranquillo lento. Immagino che la ricezione debba esaminare tutti i messaggi per vedere se c'è un messaggio "alto" ogni volta che viene eseguito.
Approccio 2:
Ho anche provato a fare un approccio di tipo mediatore in cui un messaggio è stato prima serie ad un 'front-desk' il 'front-desk' poi inviato il messaggio a uno-alta coda o basso-coda e quindi, infine, un 'operaio' filo richieste di posti di lavoro da firsk l'alta coda e se quella coda non ha nulla, poi dal basso della coda, come Ilustrated qui:
Ciò ha avuto il rovescio della medaglia di dover aspettare la richiesta per arrivare in prima fila nelle varie code, forse una sorta di sistema prioritario funzionerebbe:)
C'è un modo più intelligente di fare qualcosa del genere?
Impressionante, Fhat era proprio quello che cercavo :-) –
Condivide la ripresa di ricezione dopo il 'non importanti' messaggi ottenere leggere? Quindi se non ho nulla di importante al momento, continuerà ad aspettare per uno importante dopo aver letto quelli non importanti? – Bula