Bien, estaba reflexionando sobre esto hoy, y he venido a pedir opiniones completamente subjetivas y sesgadas al respecto. Paradójicamente, a pesar de esto, tampoco creo que sea carne de guerra de fuego. Creo que hay espacio para una conversación perfectamente civilizada: apenas es Vim vs Emacs.
He usado muchas abstracciones de concurrencia, específicamente aquellas construidas sobre hilos. Hay una gran tendencia entre ellos, ya sea que pase mensajes, que sea inmutable por defecto o que sea hilo local por defecto u otros.
La tendencia es que todos están invirtiendo la idea de hilos al hacer que el intercambio de datos sea explícito en lugar de implícito. Es decir, todos los datos no se comparten a menos que se especifique lo contrario, que es lo contrario de los hilos tradicionales que se encuentran en lenguajes como Java. (Sé que Java admite sus propias abstracciones de concurrencia de nivel superior). Por ejemplo, pasa mensajes explícitamente. Usted declara explícitamente qué variables son locales de hilo. Usted declara explícitamente qué variables son mutables. Estos son solo algunos ejemplos encontrados en algunos idiomas.
Pensé que este estilo fácil de concurrencia era un concepto moderno. Estaba equivocado. Empecé a jugar con juguetes UNIX como fork () y pipe () recientemente, y me sorprendió descubrir que existen mecanismos de concurrencia explícitos y sin esfuerzo desde el comienzo de UNIX.
Hay algo un poco extraño en darse cuenta de que C + UNIX de los años 70 hace que la concurrencia sea mucho más fácil que muchos mecanismos de subprocesos modernos y modernos.
Entonces, esto es lo que me pregunto ... ¿son estas abstracciones de hilos modernas simplemente tratando de emular procesos de estilo UNIX en la parte superior de los hilos, con todos sus rasgos explícitos y no compartidos por defecto? Sé que algunos mecanismos como STM ofrecen cosas como las transacciones de estilo DB, que es realmente una solución moderna e innovadora para la concurrencia, pero la mayoría parecen nuevas formas de hacer lo que los codificadores de UNIX estaban haciendo hace mucho tiempo.
Solo para decir, no soy un fanático de UNIX, no por ningún tramo de imaginación. Soy consciente de que los procesos son mucho más lentos que los hilos para inicializarse en muchas plataformas, pero estoy hablando de esto desde una base conceptual.