La clase thread, crea y representa un thread, que es lo que es.
Usando C++11 no hay razón para utilizar threads de WinAPI.
Un thread cumple la función perfectamente.
Luego la clase thread es lo mismo que auto x = async()... etc que ejecutan un poco uno y luego el otro y así, y no son thread al menos a los que me refiero. Si hay varios de esos el programa no daria a basto necesita un subproceso, otro programa independiente para no cargar tanto el proceso en ejecucion, dividirlo en varios procesos.
Si pones 1 thread por procesador (contando el principal), con máxima prioridad, usarás toda al CPU, si es lo que pretendes. Los threads, son threads. Son sub-procesos. Y como tales, pueden ejecutarse en paralelo si hay múltiples procesadores. Esa es la función de los threads. En caso de 1 solo procesador, siguen haciendo su función, que es dividir los hilos de ejecución.
¿Qué no ves correcto?