Quando scrivo un'app gestita da un messaggio. molto simile a un'app di Windows standard solo che utilizza ampiamente la messaggistica per le operazioni interne, quale sarebbe l'approccio migliore per quanto riguarda il threading?Ulteriori thread, prestazioni migliori?
come la vedo io, ci sono fondamentalmente tre approcci (se avete qualsiasi altra configurazione in mente, si prega di condividere):
- avere un unico processo filo tutti i messaggi.
- Avere thread separati per tipi di messaggi separati (Generale, UI, Rete, ecc ...)
- Avere più thread che condividono ed elaborano una singola coda di messaggi.
Quindi, ci sarebbero differenze di prestazioni significative tra i tre? Ecco alcune considerazioni generali: Ovviamente, le ultime due opzioni beneficiano di una situazione in cui è presente più di un processore. Inoltre, se un thread è in attesa di un evento esterno, altri thread possono ancora elaborare messaggi non correlati. Ma ignorandolo, sembra che più thread aggiungano solo overhead (interruttori di thread, per non parlare di situazioni di sincronizzazione più complicate).
E un'altra domanda: consiglieresti di implementare tale sistema sul sistema di messaggistica standard di Windows, o di implementare un meccanismo di coda separato, e perché?
La preoccupazione è già espressa: prestazioni. Se voleva che i thread migliorassero X, avrebbe chiesto quale soluzione offriva la migliore performance di X. – MSalters
facendo cosa? –
Se non sai cosa speri di migliorare in particolare, alla fine ti limiti a lanciare fili alla tua applicazione alla cieca, sperando che in qualche modo renderà le cose più veloci. Ma non funziona in questo modo e puoi facilmente rendere l'applicazione più lenta e più incline ai difetti se non hai davvero un obiettivo o un problema che stai cercando di risolvere. –