# 回顧 2016q1 Homework2 ###### tags: `sysprog2016` :::info 主講人: [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) / 課程討論區: [2016 年系統軟體課程](https://www.facebook.com/groups/system.software2016/) :mega: 返回「[進階電腦系統理論與實作](http://wiki.csie.ncku.edu.tw/sysprog/schedule)」課程進度表 ::: ## phonebook-concurrent - [ ] LanKuDot (李昆憶): [共筆](https://hackmd.io/s/HJFhaiAp) * 用 valgrind 檢查有無 memory leak 的問題。他發現原本 吳彥寬 同學撰寫的程式碼中,malloc 28次,卻只有 13 次 free。 如何修正 memory leak 呢?做了以下分析: * 既然 THREAD_NUM 是在 compilation 時期指定,則隨 THREAD_NUM 變動的 array 長度可以不用使用 malloc thread_args 的元素也是透過 malloc 取得,要 free 掉 * 在 findName() 中會給找到的 entry 的 lastname 和 detail 配給記憶體,但是沒有處理已經被搜尋過的 entry 不需要在配置記憶體的情況,像在主程式中搜尋 zyxel 就有三次,造成前兩次配置的記憶體遺失。 - [ ] c14006078 (吳彥寬): [共筆](https://hackmd.io/s/BykQDVTp) * 思考到一個很基本的問題:malloc 和 assert 往往要針對不同型態,撰寫不同版本的定義,能否透過類似 C++ template 來實做呢?C11 有 _Generic 關鍵字,可做出類似的效果。 * 使用可以很精巧,可見共筆的 "Template in C" 一節。 - [ ] TempoJiJi (邱靖吉): [共筆](https://hackmd.io/s/rymKa4aT) - [ ] tundergod (林文盛): [共筆](https://hackmd.io/s/rk5IVI0a) * 實作lock-free thread pool - [ ] CheHsuan (林哲亘): [共筆](https://hackmd.io/s/rJPYFYRa) * 整理 mmap 和 msync 的資訊。 有了基本概念後,我們可嘗試變更 mmap() 的參數,從 MAP_SHARED 換成 MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS 再對照執行時間的變化。 - [ ] kevinbird61 (瞿旭民): [共筆](https://hackmd.io/s/BJwe5Upa) * 透過 setjmp / longjmp 實作 coroutine 的方式,並且實際撰寫程式來測試,他建立兩個 coroutine: A, B。 * 在他的測試中,setjmp 把資訊儲存於 bufferA 後執行 B routine後,再藉由 longjmp 回到當初於 A routine 中呼叫 B 的位置;藉此可以達到再兩個函式中切換;把 routine A, B 換成兩條thread,便是 thread 間維持 sequential consistency 的實作。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.