正文

实现Windows 多线程的最简编码2006-09-24 13:54:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/embed/18761.html

分享到:

实现Windows 多线程的最简编码 下载:源码 可执行文件     多线程是Windows 开发者不可回避的内容。但是对于初学者,上百行的实例代码是很不容易学习的,而且其中很多无关线程的编码也影响了我们的视线。这里我整理出来一个最简单的实现多线程的代码(这个程序将创建2个新的线程,每个线程都向控制台窗口输出一句话,如果在控制台输入数字“1”就开始线程,其它的输入就暂停线程。): 新建一个Console 工程; 修改stdafx.h 头文件,使之包含下面的内容:#include <windows.h> //使用多线程必须的 #include <iostream> //这是观看效果用的using namespace std; 然后是主文件的main 函数的改造: 首先在主文件main 函数的外部声明2个函数,给多线程调用。DWORD WINAPI MTOne(LPVOID param); DWORD WINAPI MTTwo(LPVOID param); 线程函数的实现如下:DWORD WINAPI MTOne(LPVOID param){  while(true)  {    Sleep(1000);    cout<<"hi! ";  }  //一旦返回,这个线程就结束了。  return 0;} DWORD WINAPI MTTwo(LPVOID param){  while(true)  {    Sleep(1000);    cout<<"joy! ";  }  return 0;} 然后在main 函数里面创建线程和控制线程的循环:int main(int argc, char* argv[]){  int inp=0;  HANDLE hand=CreateThread (NULL, 0, MTOne, (void*)&inp, CREATE_SUSPENDED, NULL);  HANDLE hand2=CreateThread (NULL, 0, MTTwo, (void*)&inp, CREATE_SUSPENDED, NULL);  while(true){    cin>>inp;    if(inp==1) //运行线程    {      ResumeThread(hand);      ResumeThread(hand2);    }    else //暂停线程    {      SuspendThread(hand);     SuspendThread(hand2);    }  };  //终止线程  TerminateThread(hand,1);  TerminateThread(hand2,1);  return 0;} 好了,已经可以编译运行了:     已经可以看到,输入了“1”之后,线程开始执行了。由于操作系统给线程分配时间的“随机性”,两个线程输出的句子会互相“打断”。然后输入“2”,线程就暂停了。

阅读(3346) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册