Delphi多執行緒學習(3) 執行緒同步的原因

2021-05-21 20:23:51 字數 429 閱讀 2045

在使用多執行緒的時候,如果多執行緒對某個特定的公共資料或資源進行訪問,需要對多執行緒進行協調操作,叫做執行緒同步。

例如:三個執行緒分別迴圈地向listbox中寫入資料。沒有進行同步時,寫入的順序是不確定的。

三個執行緒根據分配到的cpu時間的順序向listbox中寫入資料。這裡的公共資源是listbox。

可以將這個公共的冷資源比喻為乙個圖書館,執行緒比喻為借書看書的人員。那麼沒有同步處理的情況下,就好像圖書館完全開放,沒有人管理,每個人都可以訪問這個圖書館。看起來亂糟糟的,而且當某人想借書a的話,查詢的時候書a還在,當他去借的時候可能被另一人已藉走。

為了更好管理的需要(某些對公共資源的訪問必須逐個執行緒處理,才不會出錯),這裡就要用到同步,即查詢和借書這兩個步驟要一起完成,等乙個人完成以後,才接受另乙個人的請求。

接下來介紹執行緒同步的幾種手段:臨界區、互斥量、訊號量、事件。

delphi 多執行緒

摘自 萬一的部落格 functionmyfun p pointer integer stdcall var i integer begin fori 0to500000do begin form1.canvas.lock form1.canvas.textout 10,10,inttostr i f...

delphi 多執行緒

看別人的部落格一萬次記憶效果也沒那麼好,還是自己動手寫寫吧!functioncreatethread lpthreadattributes pointer dwstacksize dword lpstartaddress tfnthreadstartroutine lpparameter point...

delphi 多執行緒例項

下面筆者將介紹乙個簡單的例項,解釋和說明前面所述的內容。1 建立form,在其中建立兩個按鈕 開始採集 和 停止採集 新增乙個paintbox1。2 建立乙個新的單元,在其中輸入以下 unit collectthread inte ce uses classes,sysutils,stdctrls,...