Confesserò immediatamente che faccio molto piccolo multithreading, quindi le domande sullo stile e l'organizzazione in questo dominio mi sembrano un po 'nuove.
Ho scritto una struttura dati (in Python, se questo è importante) che implementa un tipo speciale di coda. Mi piacerebbe usare questa coda per passare i messaggi tra i thread. Attualmente, l'unica logica che ho non ha nulla a che fare con i thread e semplicemente implementa la "salsa speciale" di organizzare i messaggi in questa coda.
Mi piace avere questa coda come una struttura dati che non ha nulla a che fare con i thread, proprio come qualsiasi altra struttura di dati. Tuttavia, ho bisogno di usare mutex, variabili di condizione, ecc. Per implementare la logica di sicurezza del thread. La domanda è: dove va questa logica?
Scrivo una classe, diciamo, SpecialQueueConcurrent
derivata da SpecialQueue
? Scrivo una classe che avvolge SpecialQueue
invece di derivarne? Fornisco un'opzione per renderlo concorrente nel costruttore?
Come si fa normalmente?