求救一个多线程问题
代码如下:
#include<windows.h>
#include<isotream.h>
DWORD test(PVOID)
{
cout<<"Done!"<<endl;
return 1;
}
void create()
{
HANDLE h;
h=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)test,0,0);
}
void main()
{
create();
getchar();
}
结果是屏幕要等我按了一个键之后才显示:done!.即是说在getchar之后才执行创建线程.
有什么办法可以在getchar()之前,在create函数未结束之前能够显示done!呢?
问题点数:50、回复次数:5Top
1 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2004-12-04 13:18:38 得分 40
#include "stdafx.h"
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
cout<<"Done!"<<endl;
return 0;
}
int main(int argc, char* argv[])
{
DWORD dwThread = 0;
CreateThread(NULL,0,ThreadProc,NULL,0,&dwThread);
getchar();
return 0;
}
Top
2 楼HunterForPig(留着口水的猪)回复于 2004-12-04 14:43:21 得分 10
bool bDone=false;
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
while(true)
{
if(bDone)
{
printf("done");
break;
}
}
return 0;
}
int main(int argc, char* argv[])
{
DWORD dwThread = 0;
CreateThread(NULL,0,ThreadProc,NULL,0,&dwThread);
while(true)
{
char n=getchar();
if(n!=NULL)
bDone=true;
}
return 0;
}
如主线程main销毁,自己所创建的线程也就结束了1Top
3 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-12-04 16:47:37 得分 0
等待线程自然结束:
void create()
{
HANDLE h;
h = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)test,0,0);
WaitForSingleObject(h, INFINITE);
}Top
4 楼xuan9932()回复于 2004-12-04 17:50:25 得分 0
ok,搞定了,结贴Top
5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-12-04 18:07:11 得分 0
用event控制线程的运行
或按月儿mm的,等待线程返回后再getcharTop




