Discussione disaccoppiamento

4

Non è raro sentire disaccoppiare l'interfaccia utente dalla logica del programma, o dalla progettazione / accesso al database dalla logica del programma ... o persino dalla logica del programma da sé.

Tuttavia, non ho mai sentito parlare di un approccio alla generalizzazione o all'estrazione dei dettagli delle attività di threading alla logica (a parte Tymeac , un pacchetto specifico per Android ). Onestamente, con tutti i dettagli relativi alla gestione dei thread, non mi aspetto che molte soluzioni funzionino bene in qualsiasi momento, quindi ...

La mia domanda è, come si scrivono i thread che non sono uniti all'anca ai processi che usano quei thread? Cosa fai normalmente quando i requisiti cambiano in un'applicazione già multi-threaded? C'è un approccio progettuale a questo che dovrei leggere?

Chiedo questo perché siamo l'alba del "bagaglio", l'era del computer nell'informatica. Alla fine, una buona metodologia dovrà esistere per gestire core 1k + e ancora più thread qui nei prossimi due decenni.

    
posta Droogans 04.12.2011 - 15:59
fonte

2 risposte

5

Nonostante wikipedia non elenchi il threading specificatamente come preoccupazione trasversale direi quasi che è uno. Trovare un modo per suddividere i dati in modo che i blocchi risultanti siano abbastanza indipendenti da essere calcolati in un thread è difficile e dipende in larga misura dal tuo problema specifico.

Ci sono approcci per separare il threading, principalmente pattern. Master-Worker , Thread Pool , tu lo chiami. Spesso si affidano alla definizione di compiti, all'esecuzione di questi e alla restituzione dei risultati in una struttura dati.

Sfortunatamente questi pattern hanno un uso limitato quando vuoi che il tuo word processor sfrutti la tua nuova macchina 64-core.

Un altro approccio sono i linguaggi di programmazione funzionale, il fatto che siano intrinsecamente paralleli, toglie parte della complessità con il multi-threading. Ma sono solo un pezzo da risolvere per risolvere questo problema e temo che tu debba conoscere un ampio elenco di tecniche. Nel multithreading non esiste "one size fits all".

    
risposta data 04.12.2011 - 17:54
fonte
0

Dai un'occhiata a Grand Central Dispatch di Apple, che consente ai programmatori di sfruttare i processori multipli senza dover gestire i thread. Il cuore di GCD è libdispatch , disponibile con una licenza Apache, quindi puoi guarda la fonte se vuoi davvero vedere come gestire i thread generici. libdispatch è apparentemente disponibile in FreeBSD se vuoi provarlo ma non funziona in MacOS X o iOS.

    
risposta data 19.12.2011 - 19:36
fonte

Leggi altre domande sui tag