O sistema operacional distribui threads nos núcleos.
Um processo consiste em um ou mais segmentos.
Um processo que tem apenas um segmento só pode ser executado em um núcleo. Um processo com 2 threads pode ser executado em 1 core ou 2 núcleos. Um processo com 500 threads pode ser executado em quantos núcleos você tiver (digamos 125 threads por núcleo para um quad core).
Então tudo depende do processo.
Isso só será executado em um núcleo:
for(i=0; i<1000; i++)
{
do_something_intensive();
}
Considerando que isso é mais amigável ao núcleo:
pthread_create(pth1,&do_something_intensive,attr,&args);
pthread_create(pth1,&do_something_else_intensive,attr,&args);
Por exemplo.