程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 漫談C++ Builder多線程編程技術

漫談C++ Builder多線程編程技術

編輯:vc教程

摘 要:本文簡單介紹了Windows環境下進行多線程的意義,重點討論了C++Builder環境下開發多線程應用程序這一問題,並通過實現生產者-消費者問題,幫我們更好地理解同步概念及其實現方法。

關鍵詞:多線程;同步;生產者-消費者;C++Builder

線程之可行性

在很多情況下,可能需要為程序創建線程。這裡給出其中一些可能性:

(1)如果創建的是一個多文檔接口(Multiple Document Interface,MDI)程序,那麼為每個窗口分配一個線程就顯得十分重要了,例如,對於一個通過多個Modem同時連接到多個主機的MDI通信程序而言,如果每個窗口都有它自己的線程來和一個主機通信,那麼整個事情就簡化很多。

(2)如果使用的是一台有多個處理器的機器,並希望充分利用所有可能獲得的CPU資源,那麼就需要將應用程序分解成多個線程。Windows2000中CPU的劃分單位為線程。因此,如果程序只包含一個線程,那麼,默認環境下該程序只能使用其中一個CPU。但是,如果將此程序劃分為多個線程,那麼Windows2000就可以在不同的CPU上運行各個線程。

(3)在後台運行的某些任務的同時,要求用戶還可以繼續使用應用程序進行工作。利用線程很容易實現這點。例如:可以將一些冗長的重算、頁面格式化操作、文件的讀寫等活動都放在單獨的線程中,使其在後台運行,而不會對用戶造成影響。

同步

撰寫多線程程序的一個最具挑戰性的問題就是:如何讓一個線程和另一個線程合作。這引出了一個非常重要的問題:同步。所謂同步是指進程、線程間相互通信時避免破壞各自數據的能力。Windows環境下的同步問題是由Win32系統的CPU時間片分配方式引起的。雖然在某一時刻,只有一個線程占用CPU(單CPU)時間,但是無法知道在什麼時候,在什麼地方線程被打斷,這樣如何保證線程之間不破壞彼此的數據就顯得格外重要。同步問題是如此重要,也相當有趣,因而吸引了不少學者對他進行研究,由此產成了一系列經典的進程同步問題,其中較有代表性的是"生產者-消費者問題"、"讀者-寫者問題""哲學家進餐問題"等。在此,本文簡要討論了C++Builder平台下如何利用多線程編程技術實現"生產者-消費者"問題,幫助我們更好得理解同步概念及其實現方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved