本程序是用来测试线程 由于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; } 
|