Voglio esplorare le contese tra i due argomenti caldi: Pulisci codice e Buone prestazioni.
(In corso ... per favore pubblica commenti per aiutarmi a scovare i dettagli di questa domanda Grazie.)
Esempi che possono aiutarmi a definire la domanda:
- Windows GDI + è noto per eseguire lavori su thread separati, che sarebbero accaduti in parallelo al codice utente se eseguiti su un computer multiprocessore.
- Il COM (Component Object Model) è un framework che offre agli sviluppatori di classi la possibilità di fornire implementazioni parallelizzabili di interfacce, tuttavia i bug che ne derivano non sono inauditi.
- Un modo per garantire la sicurezza in parallelo è garantire che il lavoro in parallelo avvenga solo all'interno di una singola chiamata al metodo dell'oggetto al livello API più esterno; il metodo non dovrebbe tornare al chiamante fino a quando il lavoro parallelizzato è finito. (Oggetti e metodi che non sono visibili all'esterno possono essere parallelizzati.) Ciò rende necessario costruire un intero gruppo di oggetti volanti solo per separare gli "Oggetti pubblici" dagli "Oggetti Privati"?
- I principi SOLID incoraggiano l'estensibilità consentendo agli utenti della biblioteca di fornire le proprie implementazioni di interfacce (tramite Dependency Injection). In che modo la biblioteca garantisce che l'implementazione dell'utente soddisfi i requisiti di sicurezza del thread?
- Il modello a oggetti del componente utilizza "modelli di thread", che è stato un tentativo su questo problema, tuttavia il più delle volte provoca solo deadlock o chiamate di funzioni non riuscite per il motivo che "stai chiamando dall'appartamento thread sbagliato".