>>2. Are too complicated for me to understand.
multithreading can be complicated. I use the win32 api functon CreateThread() to create a thread. Not all that complicated once you realize many of the paramters are left 0 :)
DWORD WINAPI ThreadProc(void * lpParameter)
{
// This is the start of the new thread
}
DWORD dwThreadID = 0;
HANDLE hThread = CreateThread( 0, // Security
0, // use default stack size
ThreadProc, // new thread
0, // parameter, you can pass a value if you wish
0, // creation flags -- see MDSN for others
&dwThreadID // Theread id to be filled in by CreateThread
);
That is the code to create a thread. There other several complications you need to consider if both threads are to access the same data objects or use the same functions at the same time.