• 原子操作


    简介

    原子操作用于执行轻量级、仅执行一次的操作,例如修改计数器、有条件的增加值、设置位等。原子操作可以确保操作的串行化,不再需要锁进行并发访问保护。原子操作的具体实现取决于体系架构。
    

    为了在释放内核网络缓冲区(称为 skbuff)之前检查是否还有余留的数据引用,定义于 net/core/skbuff.c 文件中 skb_relerse_data( ) 函数将进行如下操作:

    当 skb_release_data( ) 执行的时候,另一个调用 skbuff_clone( ) (也在 net/core/skbuff.c 文件中定义)的执行单元也许在同步地增加数据引用计数值:

    原子操作的使用将确保数据引用计数不会被这两个执行单元“蹂躏”。它也消除了使用锁去保护单一整型变量的争论。

    内核也支持 set_bit( )、clear_bit( ) 和 test_and_set_bit( ) 操作,它们可用于原子地进行位修改。查看 include/"asm-your-arch"/atomic.h 文件可以看出你所在体系架构所支持的原子操作。

  • 相关阅读:
    css资料汇总
    typescript 点滴
    vue-cli3点滴
    item2的使用方法推介
    rfc文档
    websocket
    g2
    常用的正则积累
    Vue-20190623点滴
    写一个webpackLoader
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8847888.html
Copyright © 2020-2023  润新知