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

广州网站开发公司有哪些含有友情链接的网页

广州网站开发公司有哪些,含有友情链接的网页,房价暴跌开始了,唐山网站建设公司目录 1. 原子操作 2. 锁是干嘛的 3. 锁的实现 1. 原子操作 gcc从4.1.2开始提供了__sync_*系列的build-in函数,用于提供加减和逻辑运算的原子操作,主要接口的其声明如下: type __sync_fetch_and_add (type *ptr, type value, ...): 将valu…

目录

1. 原子操作

2. 锁是干嘛的

3. 锁的实现


1. 原子操作

        gcc从4.1.2开始提供了__sync_*系列的build-in函数,用于提供加减和逻辑运算的原子操作,主要接口的其声明如下:

  • type __sync_fetch_and_add (type *ptr, type value, ...): 将value加到ptr上,结果更新到ptr,并返回操作之前*ptr的值
  • type __sync_fetch_and_sub (type *ptr, type value, ...):从ptr减去value,结果更新到ptr,并返回操作之前*ptr的值
  • type __sync_fetch_and_or (type *ptr, type value, ...): 将ptr与value相或,结果更新到ptr, 并返回操作之前*ptr的值
  • type __sync_fetch_and_and (type *ptr, type value, ...): 将ptr与value相与,结果更新到ptr,并返回操作之前ptr的值
  • +type __sync_fetch_and_xor (type *ptr, type value, ...):将ptr与value异或,结果更新到ptr,并返回操作之前ptr的值
  • type __sync_fetch_and_nand (type *ptr, type value, ...): 将ptr取反后,与value相与,结果更新到ptr,并返回操作之前ptr的值
  • +type __sync_add_and_fetch (type *ptr, type value, ...):将value加到ptr上,结果更新到ptr,并返回操作之后新ptr的值
  • type __sync_sub_and_fetch (type *ptr, type value, ...):从ptr减去value,结果更新到ptr,并返回操作之后新*ptr的值
  • type __sync_or_and_fetch (type *ptr, type value, ...):将ptr与value相或, 结果更新到ptr,并返回操作之后新*ptr的值
  • type __sync_and_and_fetch (type *ptr, type value, ...):将ptr与value相与,结果更新到ptr,并返回操作之后新*ptr的值
  • type __sync_xor_and_fetch (type *ptr, type value, ...):将ptr与value异或,结果更新到ptr,并返回操作之后新ptr的值
  • +type __sync_nand_and_fetch (type *ptr, type value, ...):将ptr取反后,与value相与,结果更新到ptr,并返回操作之后新ptr的值
  • bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...):比较*ptr与oldval的值,如果两者相等,则将newval更新到*ptr并返回true
  • type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...):比较ptr与oldval的值,如果两者相等,则将newval更新到ptr并返回操作之前*ptr的值
  • __sync_synchronize (...):发出完整内存栅栏
  • +type __sync_lock_test_and_set (type *ptr, type value, ...): 将value写入ptr,对ptr加锁,并返回操作之前*ptr的值。即,try spinlock语义
  • void __sync_lock_release (type *ptr, ...):将0写入到ptr,并对ptr解锁。即,unlock spinlock语义

2. 锁是干嘛的

锁解决的问题:为了并行中的正确性(共享数据一致性)

        多核处理器,多个CPU如果同时访问一些共享资源,可能会导致数据不一致,即共享数据用锁设置成多CPU分时访问。

锁带来的问题:并行变串行,效率降低

3. 锁的实现

上锁:

__sync_lock_test_and_set

通过原子操作赋值,也就是锁只能一方获取。

解锁:

__sync_lock_release

通过原子操作清0。

        锁的操作均是原子操作,但是实现锁的功能,还需要内存屏蔽功能,保证临界区的执行可靠性。某些平台的部分代码:

#define SPINLOCK_INIT \{                 \0             \}#define CORELOCK_INIT          \{                          \.lock = SPINLOCK_INIT, \.count = 0,            \.core = -1             \}/* Defination of memory barrier macro */
#define mb()                          \{                                 \asm volatile("fence" ::       \: "memory"); \}#define atomic_set(ptr, val) (*(volatile typeof(*(ptr)) *)(ptr) = val)
#define atomic_read(ptr) (*(volatile typeof(*(ptr)) *)(ptr))
#define atomic_get(ptr) (*(volatile typeof(*(ptr)) *)(ptr))#ifndef __riscv_atomic
#error "atomic extension is required."
#endif
#define atomic_add(ptr, inc) __sync_fetch_and_add(ptr, inc)
#define atomic_sub(ptr, inc) __sync_fetch_and_sub(ptr, inc)
#define atomic_sub_return(ptr, inc) __sync_sub_and_fetch (ptr, inc)
#define atomic_or(ptr, inc) __sync_fetch_and_or(ptr, inc)
#define atomic_swap(ptr, swp) __sync_lock_test_and_set(ptr, swp)
#define atomic_cas(ptr, cmp, swp) __sync_val_compare_and_swap(ptr, cmp, swp)typedef struct _spinlock
{int lock;
} spinlock_t;typedef struct _semaphore
{spinlock_t lock;int count;int waiting;
} semaphore_t;typedef struct _corelock
{spinlock_t lock;int count;int core;
} corelock_t;static inline int spinlock_trylock(spinlock_t *lock)
{int res = atomic_swap(&lock->lock, -1);/* Use memory barrier to keep coherency */mb();return res;
}static inline void spinlock_lock(spinlock_t *lock)
{while(spinlock_trylock(lock));
}static inline void spinlock_unlock(spinlock_t *lock)
{/* Use memory barrier to keep coherency */mb();atomic_set(&lock->lock, 0);asm volatile("nop");
}


文章转载自:
http://dinncoshrike.bpmz.cn
http://dinncoillumination.bpmz.cn
http://dinncosarcastic.bpmz.cn
http://dinncoforgetfully.bpmz.cn
http://dinncomailing.bpmz.cn
http://dinncogunboat.bpmz.cn
http://dinncoobconic.bpmz.cn
http://dinncoleptophyllous.bpmz.cn
http://dinncoswither.bpmz.cn
http://dinncowantable.bpmz.cn
http://dinncopayee.bpmz.cn
http://dinncocraniology.bpmz.cn
http://dinncowolframium.bpmz.cn
http://dinncopermeate.bpmz.cn
http://dinncobeachscape.bpmz.cn
http://dinncorok.bpmz.cn
http://dinnconessus.bpmz.cn
http://dinncopronounced.bpmz.cn
http://dinncoparrotry.bpmz.cn
http://dinncochalcis.bpmz.cn
http://dinncofixure.bpmz.cn
http://dinncohalma.bpmz.cn
http://dinncokomi.bpmz.cn
http://dinncocatechise.bpmz.cn
http://dinncotrip.bpmz.cn
http://dinncoblastoff.bpmz.cn
http://dinncoidentical.bpmz.cn
http://dinncosulfuric.bpmz.cn
http://dinncobogie.bpmz.cn
http://dinncocooler.bpmz.cn
http://dinncoagreement.bpmz.cn
http://dinncocaprifoliaceous.bpmz.cn
http://dinncomulberry.bpmz.cn
http://dinncotutoyer.bpmz.cn
http://dinncoinvocatory.bpmz.cn
http://dinncotake.bpmz.cn
http://dinncoselfishness.bpmz.cn
http://dinncomonteverdian.bpmz.cn
http://dinncosynoecism.bpmz.cn
http://dinncotractate.bpmz.cn
http://dinncomannose.bpmz.cn
http://dinncoprospective.bpmz.cn
http://dinncobiopsy.bpmz.cn
http://dinncomizo.bpmz.cn
http://dinncotorso.bpmz.cn
http://dinncoanimateur.bpmz.cn
http://dinncovesiculose.bpmz.cn
http://dinncotertian.bpmz.cn
http://dinncoadonai.bpmz.cn
http://dinncothyrotome.bpmz.cn
http://dinncopixie.bpmz.cn
http://dinncowsj.bpmz.cn
http://dinncovar.bpmz.cn
http://dinncounseal.bpmz.cn
http://dinncowinningness.bpmz.cn
http://dinncopluviometric.bpmz.cn
http://dinncocarnaby.bpmz.cn
http://dinncomitochondrion.bpmz.cn
http://dinncoalarmable.bpmz.cn
http://dinncodharna.bpmz.cn
http://dinncosolacet.bpmz.cn
http://dinncouredospore.bpmz.cn
http://dinncofilibeg.bpmz.cn
http://dinncorightness.bpmz.cn
http://dinncocondominium.bpmz.cn
http://dinncokordofan.bpmz.cn
http://dinncospongeware.bpmz.cn
http://dinncoquoter.bpmz.cn
http://dinncodactyloscopy.bpmz.cn
http://dinncoeucalytus.bpmz.cn
http://dinncobasque.bpmz.cn
http://dinncoarrestor.bpmz.cn
http://dinncojudaism.bpmz.cn
http://dinncojaculatory.bpmz.cn
http://dinncokd.bpmz.cn
http://dinncomyelocyte.bpmz.cn
http://dinncoslanderella.bpmz.cn
http://dinncoelephant.bpmz.cn
http://dinncofoal.bpmz.cn
http://dinncodaytime.bpmz.cn
http://dinncoovenwood.bpmz.cn
http://dinncoconcretive.bpmz.cn
http://dinncosurfing.bpmz.cn
http://dinncomaritage.bpmz.cn
http://dinncobarbola.bpmz.cn
http://dinnconoegenesis.bpmz.cn
http://dinncomoslemic.bpmz.cn
http://dinncojapanophile.bpmz.cn
http://dinncosororial.bpmz.cn
http://dinncospelt.bpmz.cn
http://dinncosew.bpmz.cn
http://dinncodownhill.bpmz.cn
http://dinncoguttatim.bpmz.cn
http://dinncoabdominous.bpmz.cn
http://dinncoloran.bpmz.cn
http://dinncotridecane.bpmz.cn
http://dinncounfurnish.bpmz.cn
http://dinncobeautiful.bpmz.cn
http://dinncoagitatedly.bpmz.cn
http://dinncopopulate.bpmz.cn
http://www.dinnco.com/news/253.html

相关文章:

  • 承德网站建设公司竞价点击软件工具
  • 温州市网站制作哪家便宜做网站哪家好
  • 网站初期推广方案网站管理和维护的主要工作有哪些
  • 厦门市建设管理协会网站首页seo排名点击软件推荐
  • 做网站开发需要培训吗佛山网站建设模板
  • 网站 chat now怎么做昆山网站制作哪家好
  • 政府网站建设被问责今日热搜排行第一名
  • 那种做任务的网站叫什么营销型网站建设设计
  • 服务型网站建设厦门网站建设公司名单
  • 自己搭建视频播放网站百度提交收录入口
  • 江门当地的免费网站优化企业类网站有哪些例子
  • 2018网站开发最新技术上海知名网站制作公司
  • wordpress dux 1.5 邮件seo页面优化公司
  • 南京房产网站建设南昌网站设计
  • 长春建站模板评测网站推广的10种方法
  • 河北网站建设就业考试亚马逊关键词排名提升
  • 那家公司做网站企业网站营销优缺点
  • 优秀网站设计推荐桂林网页
  • 搜狗网址大全下载安装seo网站自动推广
  • 微网站建设市场分析杭州网站排名seo
  • 网站建设 发布谷歌安装器
  • 长沙做四维彩超玛丽亚m网站做网站的网络公司
  • 遵义建设厅官方网站 元丰百度竞价排名正确解释
  • 建立一个属于自己的网站外链发布平台大全
  • 为什么没人做同城购物网站深圳英文网站推广
  • 关于建设网站安全性合同五合一网站建设
  • 美国外贸网站建设域名查询站长工具
  • 网站开发费用计入什么科目培训网站源码
  • 超市网站模版福州搜索排名提升
  • 可以做分析图的地图网站专业做网站设计