问一问:函数以线程的方式出现有什么优点么?

突发奇想,调用一下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 }

 

posted @ 2012-09-11 08:04  svolcano  阅读(145)  评论(0编辑  收藏  举报