Mis conocimientos son básicos

, ademas acá aprendemos juntos!
El thread es en C/C++ una funcion como las demas. Para crearlo se utiliza CreateThread de la API de Windows.
CreateThread(0, 0, &hilo, 0, 0, 0);
Donde
&hilo es el punero a la funcion que estaria definida de esta forma:
DWORD WINAPI hilo(LPVOID arg)
{
cout << "Hola, hilo!\n";
ExitThread(0); /* salir elegantemente... */
}
El thread comparte todo con el proceso: archivos, memoria de codigo, datos, pila, etc. Si tenes por ejemplo una variable publica, pueden acceder a ella tanto el proceso como el hilo creado por este (con el primer argumento de CreateThread se puede establecer los atributos de seguridad para que este acceso sea limitado).
Para que el hilo sea una funcion como las demas, incluso en su declaracion y definicion, podes hacer un cast a LPTHREAD_START_ROUTINE (definido en windows.h):
int hilo(const char *s){printf("%s\n", s);}
int main()
{
HANDLE h = CreateThread(0, 0,
(LPTHREAD_START_ROUTINE)&hilo,
(void*)"Hola, mundo!\n", 0, 0);
WaitForSingleObject(h, INFINITE);
return 0;
}
También esta CreateRemoteThread, con el cual podemos crear un thread en el area de memoria otro proceso si conocemos su handle (y si ademas no esta protegido).
Una buena ayuda sobre thread's, y todo lo que sea windows: MSDN.
Adjunto los ejemplos.