在VC6.0环境下,我写了一段测试代码,是关于线程的,没有用MFC:
#include <iostream>
#include <WINSOCK2.H>using namespace std;DWORD __stdcall StartSend(LPVOID strIP);void main()
{
DWORD pThreadID;
char *strIP="";
HANDLE hThread; hThread=CreateThread(NULL,0, \
(LPTHREAD_START_ROUTINE)StartSend,\
strIP,CREATE_SUSPENDED,&pThreadID);
ResumeThread(hThread);
}DWORD __stdcall StartSend(LPVOID strIP)
{
while (1) 
{
}
}
编译没问题,但是程序运行就退出了,调试发现是运行到crt0.c的exit()函数退出程序的。我的问题是:线程的运行函数StartSend是一直循环的(虽然没作什么),怎么会就退出了呢,应该是一直运行着才是,请问是怎么回事

解决方案 »

  1.   

    在main里退出来了
    启动和调度线程需要一定的时间
      

  2.   

    to:ouyh12345(五岭散人)
    sleep 加了,但是怎么线程执行了一段时间还是退出了
      

  3.   

    创建完线程,你主程序就退出了,线程要啥用?
    线程是为了充分调动cpu积极性的,不是时髦,啥都要搞个线程。
    举个例子
    你要割麦子,然后又要收棉花,然后你可以创建个线程来帮你收棉花,你继续割麦子。仅此而已。你麦子割完了走了,那就所有都over掉了
      

  4.   

    是啊,线程是跟随进程的,进程没了,线程也就没了。
    你可以做个简单的测试下
    譬如初始化x=1,创建线程不断的x++
    当x>100
    线程返回,程序退出。
    线程还有一个好处是线程在做循环的时候,ap不会出现假死现象。