# 2016q3 Homework2 (phonebook-concurrent) contributed by <`GreenYo0413`> ## 程式碼理解 **append_a** 這個結構,有點像是**TCB**,**Threads**們在跑得時候呢,他們會根據總共的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 , ... 效能圖: ![](https://i.imgur.com/IH4gKvM.png) --- 作者提出thread方法可以有效的降低整體執行時間,但是threads的執行順序會不固定,所以會造成有的**Thread**已經執行完自己的**Thread**了,最後則需要等其他人。 所以我提出的想法是使用pool的方式,大家使用共同的讀取指標,當取完自己的則將指標向前推一格,這樣就會變成大家同時執行結束,但是大家共同操作一個指標可能會造成不預期結果,所以需要一些Critical section的機制。