关于线程的退出解决方法
关于线程的退出
在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是一直循环的(虽然没作什么),怎么会就退出了呢,应该是一直运行着才是,请问是怎么回事
------解决方案--------------------
在main里退出来了
启动和调度线程需要一定的时间
------解决方案--------------------
创建完线程,你主程序就退出了,线程要啥用?
线程是为了充分调动cpu积极性的,不是时髦,啥都要搞个线程。
举个例子
你要割麦子,然后又要收棉花,然后你可以创建个线程来帮你收棉花,你继续割麦子。仅此而已。你麦子割完了走了,那就所有都over掉了
在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是一直循环的(虽然没作什么),怎么会就退出了呢,应该是一直运行着才是,请问是怎么回事
------解决方案--------------------
在main里退出来了
启动和调度线程需要一定的时间
------解决方案--------------------
创建完线程,你主程序就退出了,线程要啥用?
线程是为了充分调动cpu积极性的,不是时髦,啥都要搞个线程。
举个例子
你要割麦子,然后又要收棉花,然后你可以创建个线程来帮你收棉花,你继续割麦子。仅此而已。你麦子割完了走了,那就所有都over掉了