Con algoritmi paralleli che bussano alla porta, potrebbe essere un buon momento per pensare alla gestione degli errori.
Quindi all'inizio c'erano i codici di errore. Quelli succhiati Era libero di ignorarli, quindi potresti fallire fino a tardi e produrre codice difficile da correggere.
Poi sono arrivate le eccezioni. Quelli sono stati resi impossibili da ignorare una volta che si sono verificati, e la maggior parte delle persone (tranne Joel) li gradisce meglio.
E ora abbiamo librerie che aiutano il codice parallelo. Il problema è che non puoi gestire le eccezioni nel codice parallelo con la stessa facilità con il codice non parallelo. Se si avvia in modo asincrono un'attività e si genera un'eccezione, non vi è traccia di stack che la trascini per rilassarsi; il meglio che puoi fare è catturarlo e registrarlo sull'oggetto compito, se c'è un tale oggetto. Tuttavia, sconfigge la forza principale delle eccezioni: devi controllarle e puoi ignorarle senza ulteriore sforzo , 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 supportano errori nel codice parallelo?