当前位置: 首页 > news >正文

太原自学网站建设河南的网络推广公司

太原自学网站建设,河南的网络推广公司,做网站挣钱的人,微信小程序云开发费用原子操作和自旋锁的区别 相同点都是保护共享资源。 不同点在于: 原子操作简单易用,但只能做计数操作,保护的东西太少。 自旋锁主要用于多核处理器。短时期的轻量级加锁,加锁失败时原地打转、忙等待。避免了上下文调度和系统开销较…

原子操作和自旋锁的区别

相同点都是保护共享资源。

不同点在于:

原子操作简单易用,但只能做计数操作,保护的东西太少。

自旋锁主要用于多核处理器。短时期的轻量级加锁,加锁失败时原地打转、忙等待。避免了上下文调度和系统开销较小。

自旋锁

加锁步骤

查看锁的状态

如果锁是空闲的,将锁设置为当前线程持有

存在问题

在没有CAS函数前,多个线程同时执行这两个步骤会出错。

解决方案

CAS函数把这两个步骤合并为一条硬件级指令。第1步的比较锁状态和第2步的锁变量赋值,将变为不可分割的原子指令(硬件同步原语)

CAS函数

自旋锁使用CPU提供的CAS(Compare And Swap)函数,在用户态代码中完成加锁与解锁操作。

PAUSE指令

自旋锁并不一直忙等待,会与CPU紧密耦合,它通过CPU提供的PAUSE指令,减少循环等待时的耗电量;对于单核CPU,忙等待并没有意义,此时它会主动把线程休眠。

自旋锁原理

设自旋锁为变量lock,整数0表示锁是空闲状态,整数pid表示线程ID。

CAS(lock, 0, pid)表示自旋锁的加锁操作

CAS(lock, pid, 0)表示自旋锁的解锁操作

自旋锁伪代码

while (true)
{//因为判断lock变量的值比CAS操作更快,所以先判断lock再调用CAS效率更高if (lock == 0 && CAS(lock, 0, pid) == 1){return;}if (CPU_count > 1 ){ //如果是多核CPU,“忙等待”才有意义for(n = 1; n < 2048; n <<= 1){//pause的时间,应当越来越长for (i = 0; i < n; i++){pause();//CPU专为自旋锁设计了pause指令}if (lock == 0 && CAS(lock, 0, pid)){return;//pause后再尝试获取锁}}}sched_yield();//单核CPU,或者长时间不能获取到锁,应主动休眠,让出CPU
}

自旋锁相关API

定义自旋锁

spinlock_t s_lock ;

初始化自旋锁

int spin_lock_init(spinlock_t *lock);

获取自旋锁函数

//加锁
void spin_lock(spinlock_t *lock)

尝试获取自旋锁函数

尝试获取一次,获取成功返回“true”,获取失败返回“false”。程序继续往下执行
与上面的区别就是非阻塞

int spin_trylock(spinlock_t *lock)

释放自旋锁

void spin_unlock(spinlock_t *lock);

http://www.yayakq.cn/news/425733/

相关文章:

  • 中邮通建设咨询有限公司官方网站那个网站有用director做的片头
  • 网站建设回访长沙招聘网
  • 做的网站首页图片显示不出来汕头市网站建设分站公司
  • 外国的免费网站网站wordpress关键词有用吗
  • com后缀的网站谷歌seo零基础教程
  • 陕西建设网站外贸是做什么的工作
  • 小企业网站建设论文定制wordpress主题多少钱
  • 囧猴wordpress主题天津网站seo服务
  • 国内做优秀的农业信息网站seo网站排名软件
  • 黑龙江建设网网站深圳好的外贸网站建设
  • 百度做网站引流招聘网站开发源码
  • 网站攻击方式百度站长平台网站体检
  • 中国交通建设监理协会网站常州做网站建设
  • 中小企业网站建设与管理课件百度云建设集团网站公司
  • 公司手机网站模板免费下载海南电子商务网站
  • 北京建网站软件西安做网站app
  • 家居品牌网站建设品牌策划的七个步骤
  • 河北网站快速排名建设易代理ip官网
  • 一个网站不兼容ie怎么做企业做网站建设的好处
  • 自己编程做网站如何百度搜到自己网站
  • 如何使用微信公众号做网站北京网站seo优化排名
  • 最好网站建设公司沈阳网站建设公司哪个好
  • 推荐个做淘宝主图视频的网站aaaa景区网站建设标准
  • 自己建设网站不会咋办呀营销型网站建设试题
  • 中国工程建设焊接协会网站大都会app官网最新
  • 哪个网站做外贸年费比较便宜免费按模板制作微网站
  • 网站对话窗口怎么做电脑网站支付
  • 网站三要素怎么做丰台专业网站建设公司
  • 福州网站建设公司哪个好网站建设工作流程html
  • 唐山建设网站制作自己做网站成本