在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是一直循环的(虽然没作什么),怎么会就退出了呢,应该是一直运行着才是,请问是怎么回事
#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是一直循环的(虽然没作什么),怎么会就退出了呢,应该是一直运行着才是,请问是怎么回事
解决方案 »
- Cfile.flush(),快速写文件
- WaitCommEvent函数为何要调用两次才能重新正常工作
- 50分! 如何在程序中启动其它程序?
- CString型如何转换为整型
- 求mscomm32.ocx源码。
- 求次书《DirectX 3D Graphics Programming Bible(DX7)》电子版本!!!!定重谢!
- 这样的代码为何不能使菜单更新!
- 在TURBOC下如何将光标回到左上角?PRINTF(?)
- 请问对话框程序中如何屏蔽“回车”键和“ESC”键
- Windows api编程radio button消息处理
- 关于用xvid解压mpeg4视频文件的问题,为什么解压缩会失改?
- 高难度问题,蒋老大及各位版主请进。
启动和调度线程需要一定的时间
sleep 加了,但是怎么线程执行了一段时间还是退出了
线程是为了充分调动cpu积极性的,不是时髦,啥都要搞个线程。
举个例子
你要割麦子,然后又要收棉花,然后你可以创建个线程来帮你收棉花,你继续割麦子。仅此而已。你麦子割完了走了,那就所有都over掉了
你可以做个简单的测试下
譬如初始化x=1,创建线程不断的x++
当x>100
线程返回,程序退出。
线程还有一个好处是线程在做循环的时候,ap不会出现假死现象。