Quando bloccare un oggetto in un gioco

2

Sto scrivendo un gioco in Java in cui ogni oggetto di gioco ha un certo numero di proprietà, ma queste possono essere modificate in due modi:

  • Ogni secondo, viene eseguito un segno di spunta che può causare automaticamente una modifica.
  • Gli utenti possono inviare una richiesta al server e apportare personalmente una modifica.

Devo bloccare l'oggetto mentre il segno di spunta è in esecuzione o non è vantaggioso? Ero solo preoccupato, ad esempio, se l'utente ha apportato una modifica a un oggetto mentre il segno di spunta stava cancellando.

    
posta Oliver Dunk 26.06.2016 - 10:04
fonte

1 risposta

8

Ogni volta che due o più thread devono cambiare lo stesso oggetto e potenzialmente allo stesso tempo, è necessario assicurarsi che l'oggetto rimanga in uno stato coerente rendendolo sincronizzato .

Apparentemente, non riguarda solo l'oggetto, ma anche l'oggetto che lo contiene, perché menzioni " se l'utente ha apportato una modifica a un oggetto mentre il segno di spunta lo stava cancellando ".

Alternativa

Un altro approccio potrebbe essere quello di implementare le richieste di aggiornamento degli oggetti utilizzando il schema di progettazione dei comandi . È quindi possibile mantenere una coda condivisa di comandi che verranno alimentati dal server Web e dal segno di spunta. È quindi possibile consumare la coda in un singolo thread di aggiornamento eseguendo un comando alla volta, evitando così i conflitti.

    
risposta data 26.06.2016 - 17:55
fonte

Leggi altre domande sui tag