多執行緒程式設計練習

2023-02-11 02:39:02 字數 1744 閱讀 6563

實驗五:多執行緒程式設計練習

一、課堂範例的驗證

二、打字遊戲

三、實現書本上128頁上的練習6,7,8(至少3者選1)

6. 實現多執行緒互斥的方法:lock、monit、mutex和semaphores

(1)lock關鍵字:將某語句塊標記為臨界區,確保該執行緒位於臨界區時,另乙個執行緒不得進入該臨界區。其他執行緒將一直等待,直到該執行緒執行完畢被釋放。

用法: lock ()

(2)monit類:與lock功能類似,也是通過向某個執行緒授予物件鎖來控制對該物件的訪問,只是在用法上與lock上不同。

用法:(3)mutex互斥量:互斥量跟臨界區很相似,只有擁有互斥物件的執行緒才具有訪問資源的許可權,由於互斥物件只有乙個,因此就決定了任何情況下此共享資源都不會同時被多個執行緒所訪問。當前佔據資源的執行緒在任務處理完後應將擁有的互斥物件交出,以便其他執行緒在獲得後得以訪問資源。

用法:(4)semaphores訊號量:訊號允許多個執行緒同時使用共享資源,它指出了同時訪問共享資源的執行緒最大數目。因此建立訊號量時即要同時指出允許的最大資源計數和當前可用資源計數。

用法: static semaphore sem = new semaphore(2, 2);

7. 如果程式的各執行緒之間沒有互相爭搶控制項資源的情況,那麼可以使用:

public form()

四、模擬停車場

請以乙個停車場的運作為例練習訊號量的使用。為了簡單起見,假設停車場只有三個車位,一開始三個車位都是空的。這時如果同時來了五輛車,看門人允許其中三輛不受阻礙的進入, 然後放落車攔,剩下的車則必須在入口等待,此後來的車也都不得不在入口處等待。

這時,有一輛車離開停車場,看門人得知後,開啟車攔,放入一輛,如果又離開兩輛,則又可以放入兩輛,如此往復。如何來模擬這些車的動作。(介面可以是console/winform)

提示:訊號量semaphore是乙個非負整數(車位數),所有通過它的執行緒(車輛)都會將該整數減一(通過它當然是為了使用資源),當該整數值為零時,所有試圖通過它的執行緒都將處於等待狀態。在訊號量上我們定義兩種操作:

wait(等待) 和 release(釋放)。 當乙個執行緒呼叫wait(等待)操作時,它要麼通過然後將訊號量減一,要麼一直等下去,直到訊號量大於一或超時。release(釋放)實際上是在訊號量上執行加操作,對應於車輛離開停車場,該操作之所以叫做「釋放」是因為加操作實際上是釋放了由訊號量守護的資源。

主要**:

構造5輛車:

thread mythrd1 = new thread(run);

= "car 1 ";

構造3個停車位(且剛開始3個車位都是空的):

static semaphore sem = new semaphore(3, 3);

run函式:

public static void run()

實驗心得:

通過本次練習,再次鞏固了多執行緒執行的原理,加深了對執行緒呼叫的理解。執行緒是完成某個特定功能的**,是程式中的其中乙個執行流。多執行緒是程式任務被分為幾個並行的子執行緒,各個子執行緒相對獨立地併發執行,這樣有效地提高了程式的效能和效率,從而最有效使用處理器的時間。

在程式除錯過程中也發現了很多問題和不足:首先是對執行緒的一些常用方法不熟練,使用起來很容易混淆和出現錯誤;其次是多執行緒問題哦上總是思維混亂,對執行緒的呼叫上也會出錯;觀察結果時,發現除錯和執行結果不同,而且執行緒的除錯很困難,除錯時即又啟動了另乙個執行緒。最後通過課件給出的參考日子,以及交流才完成了**。

總的來說,實驗很大程度上加深了對多執行緒的理解,也通過實際操作對執行緒的常見方法有了掌握,理解上更加深刻。

多執行緒程式設計應用技術

一 執行緒的基本概念 執行緒 thread 一詞最早是二十世紀60年代。當時還沒有現代意義上的計算機作業系統。有專家設想了一種未來的由多個cpu所構成的計算機系統可同時進行多個不同的計算。在計算之前,將乙個較為複雜的計算分解為多個序列和並行的計算單元,然後讓每個cpu同時處理乙個平行計算單元計算過程...

GDB多執行緒除錯

一直對gdb多執行緒除錯接觸不多,最近因為工作有了一些接觸,簡單作點記錄吧。先介紹一下gdb多執行緒除錯的基本命令。info threads 顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id 切換...

實驗6多執行緒

一 實驗名稱和性質 二 實驗目的 1.理解執行緒概念 了解執行緒的狀態和生命週期 2.學習繼承thread類來建立執行緒 3.理解執行緒互斥與同步的含義 掌握synchrnized同步方法。三 實驗內容 1 設計乙個包含多執行緒執行的程式,在主程式中依次建立3個執行緒,然後按順序啟動這3個執行緒,每...