Perché il modello Flyweight è pratico?

6

Stavo leggendo su modelli di design, per migliorare la mia comprensione di quelli che conosco e rivelarne quelli che non ho. Uno degli ultimi che ho esaminato è stato il modello di peso vivo . Predica sulla funzione comune condivisa, e lo capisco. Tenendo presente l'esempio del gioco (nel link), condividendo le funzioni per le unità in un RTS sono sicuro che salverei in memoria. Ma questo non sacrificherebbe una grande quantità di [velocità] prestazioni?

Tenendo conto del tema RTS, supponiamo di avere 300 unità sul campo, tutte che condividono la stessa funzione di esecuzione, non sarebbe un incubo asincrono? E se si eseguisse questo in linea (magari con un motore di stile step / render), non si verificherebbe la CPU?

    
posta ahodder 13.03.2012 - 22:29
fonte

1 risposta

7

Solo perché il codice è condiviso su thread non significa che non sia thread-safe. Solo quando i thread condividono lo stato mutabile, è necessario che sia sincronizzato; nota che il codice è immutabile .

anche il codice per ogni funzione viene memorizzato una volta nella memoria (salvo eccezioni) anche se ci sono centinaia di oggetti e può essere usato da più thread contemporaneamente mentre i dati su cui agisce sono diversi.

    
risposta data 13.03.2012 - 22:42
fonte

Leggi altre domande sui tag