Есть ли еще какие-то языки, как Golang, которые сами распределяют корутины/зеленые треды по ядрам?

Да, помимо Go (или Golang), существует несколько других языков программирования, которые предоставляют возможность автоматической распределения корутин (также называемых зелеными тредами) по ядрам процессора. Это важная функциональность, которая позволяет эффективно использовать все ядра процессора и повысить производительность программного обеспечения.

Одним из языков программирования, предоставляющим подобную функциональность, является Erlang. Erlang - функциональный язык программирования, разработанный для построения масштабируемых, отказоустойчивых и распределенных систем. Erlang имеет встроенную поддержку акторной модели параллельного программирования, которая включает в себя механизмы автоматического распределения корутин (называемых процессами) по ядрам процессора. Благодаря этому, Erlang обеспечивает высокую производительность и эффективное использование даже на серверах с множеством ядер.

Еще одним языком программирования, который предлагает подобную функциональность, является Rust. Rust - системный язык программирования с сильной статической типизацией, который изначально разрабатывался как альтернатива C и C++. Rust предоставляет разработчикам возможность создавать безопасные по памяти и безопасные по потокам программы. Он включает в себя механизмы многопоточности, такие как абстракция tokio, которые позволяют автоматически распределять корутины по ядрам процессора.

Кроме Go, Erlang и Rust, существуют и другие языки программирования, которые предоставляют поддержку автоматического распределения корутин по ядрам процессора. Некоторые из них включают в себя Kotlin, Groovy и Scala (на основе JVM), Crystal (синтаксически сходный с Ruby), Elixir (основан на Erlang VM) и Nim (поддерживает множество платформ).

Выбор языка программирования с автоматическим распределением корутин по ядрам процессора зависит от множества факторов, включая целевую платформу, требования к производительности, разработческую экосистему и опыт разработчика. В любом случае, все эти языки предоставляют удобные средства для эффективного и параллельного программирования.