注册 登录
编程论坛 VC++/MFC

求一个VC多线程简单的程序

sunnysab 发布于 2012-05-28 12:42, 823 次点击
主线程输出“你好”,子线程输出“nihao”。帮个忙!
或者帮我解答一下:
程序代码:

#include<windows.h>
#include<stdio.h>
DWORD _stdcall ThreadProc(LPVOID lpParameter)//线程执行函数
{
    printf("nihao");
    return 0;
}
int main()
{
    CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//创建一个线程,去执行ThreadProc函数
    printf("你好");
    return 0;
}

为什么只输出“你好”?

环境:VC6/Cli  (VC6 控制台程序)
系统:XP SP3

[ 本帖最后由 sunnysab 于 2012-5-28 12:45 编辑 ]
7 回复
#2
sunnysab2012-05-28 12:44
谁帮我解答啊!我做程序要用控制台多线程。哦,对了,补充一下,我只有30分积分,所以就不悬赏了。
#3
马甲1号2012-05-28 16:04
应为你的主线程退出了, 是这样的, 主线程退出, 操作系统会把进程的所有资源, 包括子线程, 都kill掉


在主线程下面调用WaitForSingleObject等待子进程结束


#4
sunnysab2012-05-29 12:27
回复 3楼 马甲1号
可是我主线程和子线程都有任务,没办法等待(在其他程序中)。那么,如果主线程和子线程都执行while(1)就不会出现这种状况吗?
#5
马甲1号2012-05-29 12:33
...........
主线程退出的时候, 最好确保子线程干净的退出, ok?



#6
sunnysab2012-05-29 13:51
回复 5楼 马甲1号
谢谢你,我把代码改成
程序代码:

#include<windows.h>
#include<stdio.h>
DWORD _stdcall ThreadProc(LPVOID lpParameter)//线程执行函数
{
    printf("nihao");
    return 0;
}
int main()
{
    printf("开始!");
    CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//创建一个线程,去执行ThreadProc函数
    Sleep(2000);
    printf("你好");
    return 0;
}

就好了!
#7
快乐出发02202012-05-31 00:07
看不懂。。。
#8
sunnysab2012-05-31 21:32
回复 7楼 快乐出发0220
没学到这方面吗?呵呵,其实很简单!在百度上多搜搜吧,如今VC控制台多线程资料少得可怜。都是MFC的,晕!!!
1