Try   HackMD

2016q3 Homework2 (phonebook-concurrent)

contributed by <GreenYo0413>

程式碼理解

append_a 這個結構,有點像是TCBThreads們在跑得時候呢,他們會根據總共的Thread數量去拿自己應該append的欄位。
像是
threads 的數量是 4 的話

Thread 1

讀第 0 , 4 , 8 , 12 ,

Thread 1

讀第 1 , 5 , 9 , 13 ,

Thread 1

讀第 2 , 6 , 10 , 14 ,

Thread 1

讀第 3 , 7 , 11 , 15 ,

效能圖:


作者提出thread方法可以有效的降低整體執行時間,但是threads的執行順序會不固定,所以會造成有的Thread已經執行完自己的Thread了,最後則需要等其他人。

所以我提出的想法是使用pool的方式,大家使用共同的讀取指標,當取完自己的則將指標向前推一格,這樣就會變成大家同時執行結束,但是大家共同操作一個指標可能會造成不預期結果,所以需要一些Critical section的機制。