Другая попытка:
^(((\d+)\.)?(\d+)\.)?(\d+|\*)$
Это дает эти три части в группах 4,5,6, НО: Они выровненные направо. Так первый непустой указатель один из 4,5 или 6 дает поле версии.
Почему вы думаете, что Go использует потоки пользовательского пространства?
Нет. Он использует потоки ОС и может использовать преимущества нескольких ядер.
Вы можете быть озадачены тем фактом, что по умолчанию Go использует только один поток для запуска вашей программы. Если вы запустите две горутины , они будут работать в одном потоке. Но если одна горутина блокирует ввод-вывод, Go создает второй поток и продолжает запускать другую горутину в новом потоке.
Если вы действительно хотите разблокировать всю многоядерную мощность, просто используйте GOMAXPROCS ()
функция.
время выполнения.GOMAXPROCS (4); // где-то в main
Теперь ваша программа будет использовать 4 потока ОС (вместо 1) и сможет полностью использовать, например, 4-ядерную систему.
Самые последние версии Java для использования потоков ОС, хотя не обязательно однозначное отображение с потоками Java. Очевидно, что Java довольно хорошо работает со многими аппаратными потоками.