蜗窝科技

spin_lock最简单用法。

heziq · · 阅读 14012 · 2015年4月存档

最近在思考一个spin_lock的用法,比如在smp系统中,在一个内核控制路径的函数中有一个局部静态变量,对这个局部静态变量有判断,算术运算。那么我们是否要对这个局部静态变量使用spin_lock锁呢?

个人意见:需要使用,因为在smp系统中,多个内核控制路径可能同时访问该变量。所谓的共享资源,并不只是多个函数之间共享,在smp系统有可能是自己和自己共享。

欢迎大家拍砖。

标签:spin_lock使用

继续讨论

新讨论请用 GitHub 账号在下方发言——评论会保存在本仓库的 Discussions 里,与站点同寿; 再下方的「历史评论」是原站的只读存档。

评论(4 条,只读存档)

以下为原站的历史评论(只读存档);继续讨论请用上方的评论区。

  • wowo

    局部静态变量就是全局变量,如果需要,肯定要保护。 我只是好奇楼主这个变量的用处,楼主是不是可以把代码贴出来瞧瞧?
    • heziq

      @wowo:呵呵,没有代码,这是我臆想的,我研究spin-lock和softirq的共享时候想到的,在smp中,只要是静态变量,就要小心共享问题。让您见笑了哈!
  • akashequ

    不能一刀切,如果申请的中断是不可嵌套的,那么上半部里的静态变量应该不用保护;如果下半部使用的是Tasklet,也不用保护。
  • dream 主页

    我也是这么认为的:有静态变量就意味着函数不可重入,不可重入的函数,只要有可能出现并发调用,都应该加上锁进行保护。