中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 进程和线程
在vc++.net托管中使用线程的一个例子
作者:blossom007cn 时间:2001-10-09 10:09 出处:互联网 责编:chinaitpower
              摘要:在vc++.net托管中使用线程的一个例子

程序是用来测试线程
于CPU的主频不同以及运行的进程数不同结果会稍有不同
考资料<Visual C++.NET编程经典———从C++到Visual C++.NET快速进阶>
Aravind Corera Stephen Fraser 等著 乐思(wrox)出版社出
file://http://p2p.wrox.com
#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
using namespace System;
using namespace System::Threading;          file://为线程管理提供方法和属性
                      
__gc class gcsimple
{
public:
 gcsimple();
 void ThreaFunc1();
private:
 String *strToday;
};
gcsimple::gcsimple()
{
 strToday=DateTime::Now.ToShortDateString();
}
void gcsimple::ThreaFunc1()
{
 Console::WriteLine(S"今天是{0}",strToday);
 for(int i=0;i<10;i++)
 {
  Console::WriteLine(S"进程号={0},i={1}",AppDomain::GetCurrentThreadId().ToString(),i.ToString());
  for(int j=0;j<1000000000;j++)
      int jj=j*j;

 }
}
   
int _tmain(void)   
{
    Console::WriteLine(S"这是一个进程测试程序");
 gcsimple *st=new gcsimple();
 ThreadStart *d1=new ThreadStart(st,gcsimple::ThreaFunc1);            file://定义一个委托指向要执行的线程,委托的声明部分以由系统定义
 Thread *t1=new Thread(d1);                                           file://将委托指针传递给Thread类并由Thread类来管理线程
 Console::WriteLine(S"t1的状态{0}",__box(t1->ThreadState));
 Console::WriteLine(S"启动t1所管理的线程");
 t1->Start();                                                         file://启动t1所管理的线程
 Thread::Sleep(0);                                                    file://返回主线程t1所管理的线程与主线程并行执行
 Console::WriteLine(S"t1的状态是{0}",__box(t1->ThreadState));
 t1->Suspend();                                                       file://挂起t1所指的线程                     
 Thread::Sleep(0);
 Console::WriteLine(S"t1的状态是{0}",__box(t1->ThreadState));   
 t1->Resume();                                                        file://恢复t1所指的线程
 Thread::Sleep(0);
 Console::WriteLine(S"t1的状态是{0}",__box(t1->ThreadState));        
    t1->Join();                                                          file://结束线程添加此方法后将使t1所管理的线程在高优先级执行,线程结束后在返回主线程执行
 Console::WriteLine(S"t1所管理的线程已经结束");
 return 0;
}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有