线程的起步疑问

线程的启动疑问
#include<stdio.h>
#include<windows.h>

DWORD WINAPI FunProc(LPVOID lp);

int index =0;

int main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,FunProc,NULL,0,NULL);
CloseHandle(hThread1);
while(index++<20)        /*循环1*/
printf("A\n");
return 0;
}

DWORD WINAPI FunProc(LPVOID lp)
{
while(index++<10)        /*循环2*/
{
printf("d\n");
}
return 0;
}


以上是代码,问题:
1、循环1和循环2上限相同时,'A''d'交替输出,为何循环1数值较大时并不是20个'A'10个'd'?
2、如何再用如上方法(只涉及CreateThread)创建线程并输出'H',是否也需要在新创建的线程中建立index的循环?

------解决方案--------------------
要线程同步线程的起步疑问
------解决方案--------------------
1.你的主线程和FunProc线程公用一个计数器(index)
  你自己数一下,A和d加起来是不是20个?
2.看你这个线程的使用目的,如果你想这个线程启动之后一直在那里做循环可以用个while(1 && key)
  然后你想退出这个循环的时候可以在其他地方把key改成0就行
------解决方案--------------------
引用:
第2个线程的目的: printf("H"); 希望能做到 A d H 交替输出。

event实现线程同步
------解决方案--------------------
引用:
第2个线程的目的: printf("H"); 希望能做到 A d H 交替输出。

你需要加上线程同步的方式来控制各个线程打印顺序
------解决方案--------------------
没有线程同步,两个线程同用一index会出现很多情况