回覆列表
  • 1 # 海螺螄寶寶

    所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。 原子操作通常用於實現資源的引用計數,在TCP/IP協議棧的IP碎片處理中,就使用了引用計數,碎片佇列結構struct ipq描述了一個IP碎片,欄位refcnt就是引用計數器,它的型別為atomic_t,當建立IP碎片時(在函式ip_frag_create中),使用atomic_set函式把它設定為1,當引用該IP碎片時,就使用函式atomic_inc把引用計數加1。  當不需要引用該IP碎片時,就使用函式ipq_put來釋放該IP碎片,ipq_put使用函式atomic_dec_and_test把引用計數減1並判斷引用計數是否為0,如果是就釋放IP碎片。函式ipq_kill把IP碎片從ipq佇列中刪除,並把該刪除的IP碎片的引用計數減1(透過使用函式atomic_dec實現)。

  • 2 # pietr49411

    對命令(對程式設計來說就是程式),基本上不可能有原子操作,因為程式都有n個系統呼叫+庫呼叫組成。系統呼叫中有N個原子操作的API,有興趣可以檢視APUE。一般庫是基於系統呼叫的,由一堆系統呼叫組成,系統呼叫只要超過兩個,絕對不是原子的。有興趣你可以查APUE。原子操作的概念分兩種,程序級跟執行緒級,有差別。

  • 中秋節和大豐收的關聯?
  • 恐龍化石怎麼保護?