日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
圖解C++多線程問題介紹

下面著重介紹C++多線程,C++多線程為了同步完成了多項任務,而且很大程度的提高了資源使用效率,用較簡單的話語解釋C++多線程問題,它就是在同一時間內(nèi)完成多項任務。

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鳳城免費建站歡迎大家使用!

重要區(qū)段(TCriticalSection)和事件(TEvent)得到了應用。生產(chǎn)者通過TEvent類的對象Begin Consume來通知消費者開始消費,而消費者通過TEent類的對象Begin Produce通知生產(chǎn)者開始生產(chǎn)。程序中共有兩個生產(chǎn)者,一個消費者。在兩個生產(chǎn)者之間,通過TCriticalSection類的對象同步。其運行界面如圖1所示。

主要源程序如下所示:生產(chǎn)者線程:

 
 
 
 
  1. Void __fast call TProducerThread:: Execute ()  
  2. {  
  3.  //---- Place thread code here ----  
  4.  Int i = 0;  
  5.  Int j;  
  6.  while(i<100) //每個生產(chǎn)者線程生產(chǎn)100個商品  
  7.  {  
  8.   Sleep(1000);//延遲,為清楚得顯示執(zhí)行效果  
  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);//刷新界面,顯示最新生產(chǎn)-消費狀況  
  20.  Form1->Begin Consumer->Set Event();//通知消費者消費  
  21.  if(Form1->buffer_size == 5)//緩沖池滿,掛起生產(chǎn)者線程,直到通知再生產(chǎn)  
  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); //延遲,為清楚得顯示執(zhí)行效果  
  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); //刷新界面,顯示最新生產(chǎn)-消費狀況  
  13.   if(Form1->buffer_size == 4)//緩沖池不再full,喚醒由于緩沖池full而掛起的生產(chǎn)者線程  
  14.   {  
  15.    Form1->Begin Produce->Set Event ();  
  16.   }  
  17.   Sleep (100);  
  18.  }  

本文討論了C++多線程編程及其可行性,說明了在Windows環(huán)境下進行C++多線程編程的意義,并重點討論了C++Builder平臺下如何開發(fā)多線程應用程序這一問題,通過實現(xiàn)"生產(chǎn)者-消費者問題"這一著名的進程同步問題,比較清晰地反映了在Windows環(huán)境下進行多線程編程技術及其實現(xiàn)的作用和效果。

【編輯推薦】

  1. 如何正確編寫C++項目開發(fā)編寫項目計劃書
  2. 對C++庫函數(shù)進行學習探索總結(jié)筆記
  3. 深度演示C++語言的種種高安全性
  4. 詳細介紹如何準確無誤的編寫C++語言
  5. 深度演示C++語言的種種高安全性

本文標題:圖解C++多線程問題介紹
文章路徑:http://www.5511xx.com/article/dhjjseh.html