In un gioco che sto sviluppando, il thread della GUI sta catturando le azioni degli utenti e il thread della simulazione è responsabile della gestione e della risposta ad essi.
Per ridurre al minimo la complessità e il ritardo, ho predefinito tutti i possibili tipi di azione che l'utente può attivare e ho creato una serie di "opcodes". Il thread GUI imposta "successo" al array[opcode]
relativo in tempo reale e il thread di simulazione, nella posizione corretta nel codice, campiona array[opcode]
e agisce su array[opcode].data
se array[opcode].happened == true
.
Il problema è che ogni opcode ha un diverso set (dimensioni, tipi) di argomenti. Attualmente sto solo permettendo argomenti di stringa, e li analizzo nel thread di simulazione - non molto efficiente. Un'altra soluzione che mi viene in mente è la classe di codice operativo polimorfo e che si fonde dinamicamente nel thread di simulazione - brutto.
Ho chiamato questo "modello di mailbox", ma sono sicuro che qualcuno più intelligente l'ha già risolto (e nominato). Un puntatore a una soluzione più elegante sarebbe fantastico.