多线程的创建例子

对创建多线程和理解多线程会有些帮助

 

CWinThread的问题

检举|2010-07-29 16:24 sadfleg | 分类:C/C++ | 浏览1767次
我想实现这样一个功能,用CWinThread开启一个console窗口和两个线程,线程1每5秒向console窗口写thread1(用printf),线程2每7秒向console窗口写thread2

现在有几个问题  
1. 如何开启一个console窗口,我现在是
CWinThread *thread1 = new CWinThread(thread1,NULL);
thread1 ->CreateThread(CREATE_NEW_CONSOLE,0,NULL);
CREATE_NEW_CONSOLE 似乎并没有开启一个新的console窗口具体该怎么实现

2.thread2如何得到thread1开启的窗口的输出流(应该是要这样吧)

3.主线程如何终止 thread1程序的执行,依靠CWinThread *thread1指针
  我看到有 thread1->SuspendThread() ,但没看到有 thread1->exitThread() 之类的啊  

/**************************下面是部分源码,求好心人帮我完善下********************************/
unsigned int thread1(void *param)
{
while(1)
{
Sleep(5000);
printf("thread1\n");
}
return 0;
}

unsigned int thread2(void *param)
{
CWinThread *t1 =(CWinThread *)param;
//这里要怎样靠t1来重定向t2的输出流
while(1)
{
Sleep(7000);
printf("thread2\n");
}
return 0;
}

void CTestApp::test()//这是主线程吗?????
{
CWinThread t1 = new CWinThread(thread1,NULL);
CWinThread t1->CreateThread(CREATE_NEW_CONSOLE,0,NULL); //这里怎样开启一个console窗口
CWinThread t2 = new CWinThread(thread2,(void *)&t1);
CWinThread t2->CreateThread(CREATE_NEW_CONSOLE,0,NULL);

Sleep(100000);

//这里怎样结束t1,t2线程
}
我来帮他解答
提问者采纳
检举|2010-07-30 10:34
1,同样,你创建了窗口就必须显示窗口和更新窗口,不然窗口是不会出来的
2,你用#include <iostream.h>包含输入输出流对象
3,thread->ExitThread(...)来终止你的线程,ExitThread()函数是有的,其实,终止线程还有一个函数就是TerminateThread()函数,但是一般不用它,ExitThread()可以通知所有附属的这个进程的DLL停止工作,而TerminateThread()并不通知所属的DLL停止工作,这就会导致你的进程终止了,但是你的进程的DLL还在工作,就会出现错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值