第五次做業--多線程電梯的總結與分析數組
一、策咯分析安全
因爲上兩次的電梯經驗,此次雖然加大了難度,可是本身寫的時候還好是比較有信心的,因爲此次是多線程電梯在跑,爲了模擬實際的運行狀況,此次我捨棄了上兩次隊列思想,採用了模擬時間的方法,具體有三個電梯線程,一個總的調度線程,還有一個輸入線程。因爲多線程在同時運行,且輸入線程與調度線程共用一個請求托盤。每一個電梯和調度共享本身正在執行的指令序列。因此將總的指令序列和每一個電梯的本身的運行序列做爲鎖,分別鎖注可能產生衝突的代碼塊以實現線程同步。
多線程
二、類圖總覽函數
三、度量化分析學習
四、BUG分析測試
此次程序出現的bug真的是把本身都蠢哭了,DOWN拼寫成了DOWM,輸出無效指令的時候,忘記輸出時間。在輸出每一個電梯的運行時間的時候,莫名其妙的一個輸出位置多加了一個換行。這些錯誤都使人窒息,也十分感謝同窗幫我找出這些小問題,程序思路設計好,核心寫完,並非真正的寫完,可以按照給定的標準輸出也是必不可少的。
spa
第六次做業--文件系統線程
一、策略分析
設計
看到此次題目的時候還非常挺開心的,由於終於不用寫電梯了,跟室友討論了一個晚上此次做業,發現此次做業仍是很是簡單的相對於上次的電梯,只須要每隔500ms掃描一下本身監控的文件目錄,兩個for循環,兩個數組,新掃描的文件數組,和上次掃描的文件數組,按照指導書的壓球比對這兩次的信息,來判斷有無觸發,由於程序自己都是掃描,只有讀取的操做,因此是線程安全的,又加上此次和室友一塊兒學習了一些String 類的format 方法和字符串拼接,也不會出現線程運行時輸出穿插的現象。因此此次的程序是線程安全的,因此寫起來比較容易,運行效果本身的測試也比較正確。 orm
二、類圖總覽
三、度量化分析
看來C語言對個人影響仍是存在,一個函數老是想讓他有更多的功能,致使不均衡。之後努力改正。
四、bug分析
因爲莫名奇妙的緣由,此次做業被無效了,我表示十分遺憾,不知道本身有沒有更多的bug,可是我本身知道本身存在一個bug,由於我設計的時候,是一個請求一個線程,因此當一個文件被同時監控大小,名字,路徑,觸發時,分別有恢復,寫入summary,寫入detail時,會因爲線程的問題,致使結果的不可預測,但都是能夠合理解釋的。其餘的本身暫未發現。
第七次做業--出租車問題_1
一、策略分析
看到此次的做業,我第一反應就是一百個電梯???(被電梯毒害太深的孩子),不過本身仔細思考發現此次的做業跟電梯也確實有幾分類似的地方,因而設計思路就馬上有了,請求線程,出租車線程,輸入線程。請求線程一開始,就睡3000ms,讓出租車去搶單,搶單搶到的出租車在3000ms後被請求篩選。因爲出租車須要掃描請求隊列,輸入須要添加請求,因此就把請求隊列把出租車的掃描與輸入線程的讀入鎖起來。因爲請求選中出租車時須要改變出租車的狀態,因此選中哪一個出租車就以哪一個出租車爲鎖,鎖住修改狀態的部分。以便於實現線程的同步,保證線程的安全性。
二、類圖總覽
· 三、度量化分析
四、bug分析
此次沒有被找到bug我仍是比較意外的,由於上週要OS期中考試,因此爲了複習此次本身的程序寫的的確是有些倉促,不過基本的指令都仍是能夠跑的,每一個出租車的運行軌跡我都單獨輸出一個文件裏,雖然說有一百多個文件,可是看起來仍是十分清晰的。
心得與體會
經過這三次做業的編寫與測試,本身也愈來愈看淡這門課的成績了,只單純的想從這門課訓練下本身的技能。成績並不能絕對的反映出本身這門課學的好壞,只要本身學到本身想學到的東西就行了。