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

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鳳城免費(fèi)建站歡迎大家使用!
重要區(qū)段(TCriticalSection)和事件(TEvent)得到了應(yīng)用。生產(chǎn)者通過TEvent類的對(duì)象Begin Consume來通知消費(fèi)者開始消費(fèi),而消費(fèi)者通過TEent類的對(duì)象Begin Produce通知生產(chǎn)者開始生產(chǎn)。程序中共有兩個(gè)生產(chǎn)者,一個(gè)消費(fèi)者。在兩個(gè)生產(chǎn)者之間,通過TCriticalSection類的對(duì)象同步。其運(yùn)行界面如圖1所示。
主要源程序如下所示:生產(chǎn)者線程:
- Void __fast call TProducerThread:: Execute ()
- {
- //---- Place thread code here ----
- Int i = 0;
- Int j;
- while(i<100) //每個(gè)生產(chǎn)者線程生產(chǎn)100個(gè)商品
- {
- Sleep(1000);//延遲,為清楚得顯示執(zhí)行效果
- if(Form1->buffer_size > 0)//緩沖池不空,通知消費(fèi)者消費(fèi)
- {
- Form1->Begin Consumer->Set Event ();
- }
- Form1->Produce Guard->Acquire ();
- i++;
- StrResult = IntToStr (i);
- J = Form1->buffer_size;
- Form1->Product [j] = i;
- Form1->buffer_size++;
- Synchronize(Show Result);//刷新界面,顯示最新生產(chǎn)-消費(fèi)狀況
- Form1->Begin Consumer->Set Event();//通知消費(fèi)者消費(fèi)
- if(Form1->buffer_size == 5)//緩沖池滿,掛起生產(chǎn)者線程,直到通知再生產(chǎn)
- {
- Form1->Begin Produce->Wait For (INFINITE);
- }
- Sleep (1000);
- Form1->Produce Guard->Release ();
- }
- While (Form1->buffer_size > 0)
- {
- Form1->Begin Consumer->Set Event ();
- }
- }
消費(fèi)者線程:
- Void __fast call TConsumerThread::Execute()
- {
- //---- Place thread code here ----
- Int j;
- For (int i = 0;i < 200;i++)
- {
- Sleep(100); //延遲,為清楚得顯示執(zhí)行效果
- Form1->Begin Consumer->Wait For(INFINITE);//掛起消費(fèi)者線程,直到通知再消費(fèi)
- J = Form1->buffer_size - 1;
- StrResult = IntToStr (Form1->Product [j]);
- Form1->buffer_size--;
- Synchronize(Show Result); //刷新界面,顯示最新生產(chǎn)-消費(fèi)狀況
- if(Form1->buffer_size == 4)//緩沖池不再full,喚醒由于緩沖池full而掛起的生產(chǎn)者線程
- {
- Form1->Begin Produce->Set Event ();
- }
- Sleep (100);
- }
- }
本文討論了C++多線程編程及其可行性,說明了在Windows環(huán)境下進(jìn)行C++多線程編程的意義,并重點(diǎn)討論了C++Builder平臺(tái)下如何開發(fā)多線程應(yīng)用程序這一問題,通過實(shí)現(xiàn)"生產(chǎn)者-消費(fèi)者問題"這一著名的進(jìn)程同步問題,比較清晰地反映了在Windows環(huán)境下進(jìn)行多線程編程技術(shù)及其實(shí)現(xiàn)的作用和效果。
【編輯推薦】
- 如何正確編寫C++項(xiàng)目開發(fā)編寫項(xiàng)目計(jì)劃書
- 對(duì)C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
- 深度演示C++語言的種種高安全性
- 詳細(xì)介紹如何準(zhǔn)確無誤的編寫C++語言
- 深度演示C++語言的種種高安全性
名稱欄目:圖解C++多線程問題介紹
文章分享:http://www.dlmjj.cn/article/dhjjseh.html


咨詢
建站咨詢
