Ответ
Hyper-Threading — это технология Intel, позволяющая одному физическому ядру CPU выполнять несколько потоков одновременно. Она создает виртуальные ядра (логические процессоры), улучшая утилизацию ресурсов.
Пример в Go:
При наличии Hyper-Threading runtime.NumCPU() вернет удвоенное количество физических ядер (если поддержка включена).
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println("Логических ядер:", runtime.NumCPU())
}
Нюансы:
- Не всегда дает прирост (зависит от нагрузки).
- Может мешать в задачах с жесткой синхронизацией.
- В Go GOMAXPROCS по умолчанию равен
NumCPU(), что может привести к contention.