目的: 檢驗學員對並行和多執行緒程式設計和《Demystifying the Linux CPU Scheduler》的認知
1
考慮我們想要實作一個 lock-free 的 single-producer/single-consumer (SPSC) 並行程式,底層使用 ring buffer,且避免 false sharing。程式碼可見: main.c (部分遮蔽)
編譯方式:
測試程式的參考輸出: (其中 4
指定 4 個處理器核)
其中利用到針對多核處理器的 spinlock: significant optimizations 技巧,對照 cserv 專案的 src/util/spinlock.h。
已知執行過程不會遇到任何 assert 錯誤,請補完程式碼,使其執行符合預期。作答規範:
AAAA
和 BBBB
皆為表示式,不該有括號 (及 (
與 )
)