nachos task1.1
要求:實現
kthread.join()
方法。 該方法只被呼叫一次。
實現:join
方法是當乙個執行緒呼叫他時,當前執行的執行緒被掛起,該執行緒執行,直到該執行緒執行完後,當前執行緒才繼續執行。在這裡我們用訊號量的方法實現,具體的思路如下:當乙個執行緒呼叫
join
時,當前執行緒執行
p操作將自己掛起,呼叫執行緒開始執行,當呼叫執行緒執行完之後,即
finish
時,再將當前執行緒喚醒。**實現如下:
首先定義乙個訊號量:
private semaphore joinsignal = new semaphore(0);
join
的具體方法如下,當呼叫該方法時,
joinsignal進行p
操作public void join()
呼叫執行緒結束後需要將當前執行緒喚醒,所以在
finish
中加入喚醒的
v語句:
currentthread.joinsignal.v();
注意這句話需要加在
sleep
()之前,只有喚醒後才可以睡覺
接下來就是進行測試:
public static void jointest()
在public void selftest()
中進行測試:
kthread.jointest();
測試的結果如下:(執行緒
1是我們新建立的,呼叫
join
())this is join test:
*** thread 1 looped 0 times
*** thread 1 looped 1 times
*** thread 1 looped 2 times
*** thread 1 looped 3 times
*** thread 1 looped 4 times
*** thread 0 looped 0 times
*** thread 0 looped 1 times
*** thread 0 looped 2 times
*** thread 0 looped 3 times
*** thread 0 looped 4 times
程式設計TASK1
1.實現可以動態擴容的陣列 思路 新建陣列的時候,將陣列的容量大小設定為乙個變數,如果陣列容量不夠的時候,可以將原來資料擴大原來的幾倍,進行擴容 也可以直接使用c 中的vector容器,不必考慮原陣列的大小,如果需要增加元素,直接v.pushback 即可 2.將兩個有序陣列合併成乙個有序陣列 思路...
菜鳥學習TASK1
鴿子部第一次task當然不能鴿掉,但是進度很迷,所以打算先對照task把概要大概寫下,然後把發展方案寫下,然後再一點點完善細節。task 了解c語言的幾大資料型別 包括陣列與字串 了解ascii碼和char型別的關係,有興趣的可以進一步了解unicode。基礎資料型別 整型 短整型short,整型i...
陣列學習task1
1.利用動態陣列解決資料存放問題 編寫一段 要求輸入乙個整數n,用動態陣列a來存放2 n之間所有5或7的倍數,輸出該陣列。托普利茨矩陣問題 如果乙個矩陣的每一方向由左上到右下的對角線上具有相同元素,那麼這個矩陣是托普利茨矩陣。給定乙個m x n的矩陣,當且僅當它是托普利茨矩陣時返回true。def ...