OK, eu estava pensando nisso hoje e vim pedir opiniões completamente subjetivas e tendenciosas sobre isso. Paradoxalmente, apesar disso, também não acho que seja forragem de guerra. Acho que há espaço para uma conversa perfeitamente civilizada - dificilmente é Vim vs Emacs.
Eu usei muitas abstrações de simultaneidade, especificamente aquelas criadas sobre tópicos. Há uma grande tendência entre elas, seja a transmissão de mensagens, imutável por padrão, ou thread local por padrão ou outras.
A tendência é que todos eles invertam a ideia de threads, tornando o compartilhamento de dados explícito e não implícito. Ou seja, todos os dados não são compartilhados, a menos que seja especificado de outra forma, o que é o oposto do encadeamento tradicional encontrado em linguagens como Java. (Eu sei que o Java suporta suas próprias abstrações de simultaneidade de nível superior.) Por exemplo, você passa mensagens explicitamente. Você declara explicitamente quais variáveis são locais de encadeamento. Você declara explicitamente quais variáveis são mutáveis. Estes são apenas alguns exemplos encontrados em alguns idiomas.
Eu pensei que esse estilo fácil de concorrência era um conceito moderno. Eu estava errado. Comecei a brincar com brinquedos UNIX como fork () e pipe () recentemente, e fiquei chocado ao descobrir que mecanismos de concorrência explícitos e sem esforço existem desde o início do UNIX.
Há algo um pouco estranho em perceber que o C + UNIX dos anos 70 facilita a concorrência muito mais do que muitos mecanismos modernos de encadeamento na moda.
Então, aqui está o que eu estou pensando ... essas abstrações de encadeamentos modernos estão simplesmente tentando imitar processos no estilo UNIX sobre encadeamentos, com todos os seus traços explícitos e não compartilhados por padrão? Sei que alguns mecanismos como o STM oferecem coisas como transações no estilo DB, que são genuinamente uma solução moderna e inovadora para simultaneidade, mas a maioria parece apenas novas maneiras de fazer o que os codificadores UNIX estavam fazendo há muito tempo.
Só para dizer, eu não sou um fanboy do UNIX, nem por qualquer imaginação. Estou ciente de que os processos são muito mais lentos do que os threads para inicializar em muitas plataformas, mas estou falando sobre isso de uma base conceitual.