![]() |
1
1
没有必要用一个
以上是完全有效的代码。在堆栈上声明自旋锁可能很有用,也更容易,但如果您想与其他并发运行的代码共享它,则必须小心。在函数内声明具有自动存储持续时间的变量只会使在函数的生存期内引用该变量有效。一旦函数返回(或者,根据情况,甚至可能早于此),该变量将变得无效,因此将成为您传递的任何引用。因此,在这种情况下,您的函数需要比它定义的spinlock的任何其他用户都活得更长。
事实上,您可以看到一些(非常罕见的)内核代码片段这样做,例如
here in
|
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |
![]() |
tTt · 使用堆栈中的值重新分配指针 5 月前 |
![]() |
manuel · 现代C中空指针的替代方案++ 6 月前 |
![]() |
CPlus · 有没有一种方法可以确定指针的表示在C中是否是“线性的”? 10 月前 |