图解C++多线程问题介绍

下面着重介绍C++多线程,C++多线程为了同步完成了多项任务,而且很大程度的提高了资源使用效率,用较简单的话语解释C++多线程问题,它就是在同一时间内完成多项任务。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了凤城免费建站欢迎大家使用!

重要区段(TCriticalSection)和事件(TEvent)得到了应用。生产者通过TEvent类的对象Begin Consume来通知消费者开始消费,而消费者通过TEent类的对象Begin Produce通知生产者开始生产。程序中共有两个生产者,一个消费者。在两个生产者之间,通过TCriticalSection类的对象同步。其运行界面如图1所示。

主要源程序如下所示:生产者线程:

 
 
 
 
  1. Void __fast call TProducerThread:: Execute ()  
  2. {  
  3.  //---- Place thread code here ----  
  4.  Int i = 0;  
  5.  Int j;  
  6.  while(i<100) //每个生产者线程生产100个商品  
  7.  {  
  8.   Sleep(1000);//延迟,为清楚得显示执行效果  
  9.   if(Form1->buffer_size > 0)//缓冲池不空,通知消费者消费  
  10.   {  
  11.    Form1->Begin Consumer->Set Event ();  
  12.  }  
  13.  Form1->Produce Guard->Acquire ();  
  14.  i++;  
  15.  StrResult = IntToStr (i);  
  16.  J = Form1->buffer_size;  
  17.  Form1->Product [j] = i;  
  18.  Form1->buffer_size++;  
  19.  Synchronize(Show Result);//刷新界面,显示最新生产-消费状况  
  20.  Form1->Begin Consumer->Set Event();//通知消费者消费  
  21.  if(Form1->buffer_size == 5)//缓冲池满,挂起生产者线程,直到通知再生产  
  22.  {  
  23.   Form1->Begin Produce->Wait For (INFINITE);  
  24.  }  
  25.  Sleep (1000);  
  26.  Form1->Produce Guard->Release ();  
  27. }  
  28. While (Form1->buffer_size > 0)  
  29. {  
  30.  Form1->Begin Consumer->Set Event ();  
  31. }  

消费者线程:

 
 
 
 
  1. Void __fast call TConsumerThread::Execute()  
  2. {  
  3.  //---- Place thread code here ----  
  4.  Int j;  
  5.  For (int i = 0;i < 200;i++)  
  6.  {  
  7.   Sleep(100); //延迟,为清楚得显示执行效果  
  8.   Form1->Begin Consumer->Wait For(INFINITE);//挂起消费者线程,直到通知再消费  
  9.   J = Form1->buffer_size - 1;  
  10.   StrResult = IntToStr (Form1->Product [j]);  
  11.   Form1->buffer_size--;  
  12.   Synchronize(Show Result); //刷新界面,显示最新生产-消费状况  
  13.   if(Form1->buffer_size == 4)//缓冲池不再full,唤醒由于缓冲池full而挂起的生产者线程  
  14.   {  
  15.    Form1->Begin Produce->Set Event ();  
  16.   }  
  17.   Sleep (100);  
  18.  }  

本文讨论了C++多线程编程及其可行性,说明了在Windows环境下进行C++多线程编程的意义,并重点讨论了C++Builder平台下如何开发多线程应用程序这一问题,通过实现"生产者-消费者问题"这一著名的进程同步问题,比较清晰地反映了在Windows环境下进行多线程编程技术及其实现的作用和效果。

【编辑推荐】

  1. 如何正确编写C++项目开发编写项目计划书
  2. 对C++库函数进行学习探索总结笔记
  3. 深度演示C++语言的种种高安全性
  4. 详细介绍如何准确无误的编写C++语言
  5. 深度演示C++语言的种种高安全性

名称栏目:图解C++多线程问题介绍
当前地址:http://www.shufengxianlan.com/qtweb/news28/536878.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联