目的: 檢驗學員對 Atomics 操作, Ring buffer, futex, mmap 的認知
作答表單: 測驗 1-2 (針對 Linux 核心「設計/實作」課程)
1
spms 是個使用 C11 撰寫的單一發布者多訂閱者 (Pub/Sub模型,參見 Build a one-to-many Pub/Sub system) 環狀緩衝區,適用於共享記憶體。發布者在不知道訂閱者的情況下,將訊息寫入環狀緩衝區,當訂閱者讀取一條訊息時,該訊息不會從環狀緩衝區中移除,其他訂閱者仍然可讀取。若訂閱者的讀取速度不夠快,它將錯過一些訊息。
測試方式:
./test pub
作為發布者./test sub
作為訂閱者編譯方式
參考輸出:
目前的 ring buffer 是 blocking,意味著當緩衝區是空的時候,讀取端會等到有資料為止。
作答規範: