Con gli algoritmi paralleli che bussano alla porta, potrebbe essere un buon momento per pensare alla gestione degli errori.
Quindi all'inizio c'erano dei codici di errore. Quelle succhiate. È stato libero di ignorarli, quindi potresti fallire in ritardo e produrre codice difficile da eseguire il debug.
Poi sono arrivate le eccezioni. A loro è stato impossibile ignorare una volta che si verificano e alla maggior parte delle persone (tranne Joel) piacciono di più.
E ora abbiamo librerie che aiutano il codice parallelo. Il problema è che non è possibile gestire le eccezioni nel codice parallelo con la stessa facilità con il codice non parallelo. Se avvii un'attività in modo asincrono e viene generata un'eccezione, non c'è traccia di stack oltre la quale svolgere; la cosa migliore che puoi fare è catturarlo e registrarlo sull'oggetto task, se esiste un tale oggetto. Tuttavia, sconfigge la forza primaria delle eccezioni: devi verificarle e puoi ignorarle senza alcuno sforzo aggiuntivo , mentre nel codice a thread singolo un'eccezione attiverà necessariamente le azioni appropriate (anche se significa terminare il tuo programma).
In che modo le implementazioni linguistiche o le librerie dovrebbero supportare errori nel codice parallelo?