问一问:函数以线程的方式出现有什么优点么?
突发奇想,调用一下main() 函数怎么样呢……
结果:形成你调用我,我调用你的闭环关系。程序无法无限的进行下去,直到突破某一种限制(初步的看法是,vs或者windows的保护机制,没有程序有堆栈空间限制,栈不能无限多);fun() 函数以线程的方式出现,vs2005 正常结束运行,没有警告,没有错误;fun2()以普通函数的方式出现,vs或者windows 报错,停止程序运行。
疑问:真正的原因是什么呢?
1 #include <stdio.h> 2 #include <windows.h> 3 DWORD fun(LPVOID lp); 4 void fun2(void); 5 int i =0; 6 int main() 7 { 8 printf("in Main() :%d\n",i++); 9 //HANDLE h; 10 //h = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)fun,NULL,0,NULL);// 程序可以正常的结束,至少没有报错,没有警告 11 //WaitForSingleObject(h,INFINITE); 12 fun2(); // 为什么这个调用就不行呢? 13 return 0; 14 } 15 DWORD fun(LPVOID lp) 16 { 17 printf("in void\n"); 18 main(); 19 return 0; 20 } 21 void fun2(void) 22 { 23 printf("in void\n"); 24 main(); 25 }