首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >既然有SpinWait,为什么还要使用SpinLock呢?

既然有SpinWait,为什么还要使用SpinLock呢?
EN

Stack Overflow用户
提问于 2016-01-07 04:10:21
回答 1查看 2K关注 0票数 2

在研究.net提供的同步原语时,我遇到了SpinLock和SpinWait。从它的外观上看,在我看来,SpinWait似乎永远是go..why的方式。当线程实际上必须等待来自线程外部的信号时,人们会继续忙于等待而不放弃CPU吗?在这些空闲等待中花费的周期可能会被线程使用,该线程将发出信号并解除阻塞处于忙等待状态的线程。

SpinLock为什么会存在?它与使用while循环的简单忙等待有什么不同?在什么情况下,人们会想要在SpinWait上使用SpinLock?

EN

回答 1

Stack Overflow用户

发布于 2016-01-07 04:42:35

通常,自旋锁的实现应该已经了解如何避免剥夺其他核心(或共享此核心的其他线程)的执行资源。所以你不应该担心与那些会解锁你的线程发生冲突。当然,自旋锁的次优实现并不是很有用的东西。(尽管这并不能阻止人们编写它们!)

如果您知道等待的时间非常短,因为只有在完成琐碎的操作时才会持有锁,那么自旋锁的开销比切换到等待的自适应自旋锁要少一点。一个很好的例子是,在几乎所有线程都访问集合的应用程序中,保护竞争激烈的快速集合(如散列)的锁,并且仅当在集合中插入、删除或找到对象时才持有该锁。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34647224

复制
相关文章
[剑指offer] 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39
尾尾部落
2018/09/04
6480
斐波那契数列
如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。
MickyInvQ
2022/05/06
4240
斐波那契数列
斐波那契数列
我们都知道斐波那契数(也叫兔子数)是一组十分有趣的数字,首相为1,第二项也是1,之后的每一项就是前两项之和,那么该如何实现输入第n项就打印其对应的斐波那契数字呢?
用户9996207
2023/01/13
4990
斐波那契数列
斐波那契数列的第n+2项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数。
饶文津
2020/05/31
7020
斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2) 显然这是一个线性递推数列。 代码实现
呆呆
2021/10/06
3920
斐波那契数列
斐波那契数列【别名黄金分割数列、兔子数列】 斐波那契数列的特点:第1,2两个数为1,1。从第三个数开始,该数是其前两个数之和。
司六米希
2022/11/15
5330
斐波那契数列
斐波那契数列
斐波那契数列的核心就是F(N) = F(N-1) + F(N-2),一般看到的都会采用递归,但是如果使用循环来实现且进行对比,容易发现不少对真是性能的影响
忧愁的chafry
2022/10/30
4600
斐波那契数列
斐波那契数列和斐波那契数
        斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
会洗碗的CV工程师
2022/11/29
7560
斐波那契数列和斐波那契数
[每日一题]斐波那契数列
问题 1131: 【C语言训练】斐波纳契数列 题目描述 斐波纳契数列 1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳契数列”,其中每个数字都是“斐波纳契数”。 输入 一个整数N(N不能大于40) 输出 由N个“斐波纳契数”组成的“斐波纳契数列”。 样例输入 6 样例输出 1 1 2 3 5 8 提示 这类题目可能会涉及一些数学知识、逻辑锻炼、模拟问题等等,需要大家对C语言语法能熟练运用之后用来训练提高。 也可以自行查找知识,不明白可以在讨论版中讨论学习。
编程范 源代码公司
2018/04/16
8370
斐波那契数列
递归求解方法 class Solution { public: int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1)+fib(n - 2); } };
大忽悠爱学习
2022/05/05
4480
斐波那契数列
斐波那契数列
问题斐波那契数列。(斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。前两项相加等于第三项)
算法与编程之美
2022/02/17
6160
斐波那契数列
斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
木子星兮
2020/07/17
7060
斐波那契数列
#include <iostream> using namespace std; int n,a,b,p; int f(int x){ if(x <= 2){ return 1; } return (a*f(x-1)+b*f(x-2))%p; } int main() { cin>>n>>a>>b>>p; cout<<f(n)<<endl; return 0; }
且陶陶
2023/04/12
3360
斐波那契数列
斐波那契数列
斐波那契数列,1,1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89, 144,. 如果设F(n)为该数列的第n 项( n ∈N* ),那么数列有如下形式,F(n)=F(n-1)+F(n 2)。
砖业洋__
2023/05/06
2330
斐波那契数列
刷抖音突然刷到了斐波那契数列,突发奇想就用java写一个斐波那契数列。虽然很早之前学习算法,这应该是最基本的,但是对于一个干着普普通通工作的我已经是需要深思熟虑一番。
cultureSun
2023/09/02
2560
斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. public class Fibonacci { public static int[] record = null; public int Fibonaci(int n){ if(n<=1){ return n; } if(null == record){ record = new int[n+1];
用户3003813
2018/09/06
3910
[算法] - 斐波那契数列
牛客网 NC65-斐波那契数列 两种实现 迭代 public class Solution { public int Fibonacci(int n) { if(n == 0 || n == 1){ return n; } int a = 0; int b = 1; int fib = 0; for(int i = 2; i <= n; i++){
夹胡碰
2021/06/17
8050
斐波那契数列的N种算法
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)。
用砖头敲代码
2022/08/30
2960
Python|斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
算法与编程之美
2020/04/20
8110
Python|斐波那契数列
打印 斐波那契数列
方法一;递归(可以达到逐个输出的目的) public class FibonacciTest { public long fibonacci(long number){ if (number==0||number==1){ return number; }else{ // 该方法里调该方法 return fibonacci(number-1)+fibonacci(number-2);
传说之下的花儿
2023/04/16
1610

相似问题

如何将output子文件夹设置为在生成时将引用dll复制到

15

如何将生成的图形复制到子文件夹?

20

如何将nupkg从生成过程复制到删除文件夹

11

如何使生成将内容从引用库复制到IIS express文件夹?

24

如何将文件复制到时间戳自动生成的文件夹?

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文