OK, stavo riflettendo su questo oggi, e sono venuto a chiedere pareri completamente soggettivi e di pregiudizi su di esso. Paradossalmente, nonostante ciò, non penso che sia anche foraggio da guerrafiamma. Penso che ci sia spazio per una conversazione perfettamente civile - Difficilmente Vim vs Emacs.
Ho usato molte astrazioni di concorrenza, in particolare quelle costruite in cima ai thread. C'è una grande tendenza tra di loro, sia che passi il messaggio, sia immutabile-per-predefinita, o thread-local-by-default o altri.
La tendenza è che stanno invertendo l'idea dei thread rendendo la condivisione dei dati esplicita piuttosto che implicita. Cioè, tutti i dati non sono condivisi se non diversamente specificato, che è l'opposto del threading tradizionale trovato in linguaggi come Java. (So che Java supporta le proprie astrazioni di concorrenza di livello superiore però.) Ad esempio, si passano esplicitamente messaggi. Si specifica esplicitamente quali variabili sono thread-local. Dichiarate esplicitamente quali variabili sono mutabili. Questi sono solo alcuni esempi trovati in alcune lingue.
Ho pensato che questo facile stile di concorrenza fosse un concetto moderno. Mi sono sbagliato. Ho iniziato a giocare con giocattoli UNIX come fork () e pipe () di recente, e sono rimasto scioccato nello scoprire che meccanismi di concorrenza facili ed espliciti esistevano sin dall'inizio di UNIX.
C'è qualcosa di strano nel rendersi conto che C + UNIX degli anni '70 rende la lontana molto più facile di molti moderni meccanismi di threading di tendenza.
Quindi, ecco cosa mi chiedo ... queste astrazioni di thread moderne stanno semplicemente cercando di emulare processi in stile UNIX in cima ai thread, con tutti i loro tratti espliciti e non condivisi per default? So che alcuni meccanismi come la STM offrono cose come le transazioni in stile DB che sono in realtà una soluzione moderna e innovativa per la concorrenza, ma la maggior parte sembrano solo nuovi modi di fare ciò che i codificatori UNIX stavano facendo da molto tempo.
Solo per dire, non sono un fan dei fan di UNIX, non con un minimo di immaginazione. Sono consapevole del fatto che i processi sono molto più lenti dei thread da inizializzare su molte piattaforme, ma sto parlando di questo da una base concettuale.