2021年9月17日 星期五

lock-free

術語比較:

  • lock-free:沒鎖死。以系統觀點,只要執行夠長的時間,至少會有一個執行緒有進展。
  • lockless (lock-freedom?):不用鎖。不用 lock 共用資料。不用鎖 (lockless) 未必不會鎖死 (lock-free),也可能鎖死。
  • wait-freedom?:不用等
  • obstruction-freedom
  • non-blocking (非阻塞):
    • 任何 thread 的失敗或暫停不會造成其它 thread 的失敗或暫停。non-blocking 演算法如果能保證 system-wide progress 是 lock-free,如果能進一步保證 per-thread progress 是 wait-free。
    • 在電信網路,是指建立新的連線路徑不用調整現有的連線。沒缺陷的電話交換機總是可以建立連線 (nonblocking minimal spanning switch)。

參考

  1. https://hackmd.io/@sysprog/concurrency-lockfree
  2. https://hackmd.io/@sysprog/concurrency-atomics

lock contention

微處理器專用 atomic 指令及軟硬體設計考量:ABA 問題, memory ordering 及 memory barrier、多核處理器特性、C11 標準的 <stdatomic.h>、Linux 核心介面

SPSC (single-producer and single-consumer)

SPMC (single-producer, multiple-consumer)

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...