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