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

东莞做网站优化湖州长兴做网站

东莞做网站优化,湖州长兴做网站,网站建设到底属于什么行业,京东网站开发技术目录 1. 原子操作 2. 锁是干嘛的 3. 锁的实现 1. 原子操作 gcc从4.1.2开始提供了__sync_*系列的build-in函数#xff0c;用于提供加减和逻辑运算的原子操作#xff0c;主要接口的其声明如下#xff1a; 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并返回truetype __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://www.w-s-a.com/news/602750/

相关文章:

  • 如何搭建网站教程一个人制作网站
  • 网站开发专业都有哪些课程广州安全教育平台账号找回
  • 网站调整方案适合平面设计师的网站
  • 免费服务器建立网站用html5做的旅游网站代码
  • 学校英语网站栏目名称WordPress禁用邮件注册
  • 手机qq网页版网站沧州手机网站开发
  • 深圳罗湖网站设计公司建设的网站属于无形资产吗
  • 网站开发python西安网站建站品牌
  • 网站开发商标属于哪一类做网站还有钱赚吗
  • 做设计的搜素材上什么网站好设计公司画册设计哪家好
  • 视频网站开发需要什么语言做ui设计一年后年薪多少
  • 网站服务器维护费用统一企业官方网站
  • 网站如何调用手机淘宝做淘宝客呼和浩特网站运营公司
  • 做推广可以上那些网站网页游戏排行榜2014前十名
  • 国外网站备案流程企业网站 流程
  • 重庆网站建设letide童程童美少儿收费价目表
  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写
  • 自己可以接单做网站吗wordpress 添加自定义按钮
  • 网站首页权重宣传页制作
  • 智能网站建设软件有哪些方面网页的建设
  • 石铜路网站建设生鲜电商网站开发
  • 怎么提高网站加载速度慢网站的轮播怎么做的
  • 网络网站推广优化建筑工程教育网官方网站
  • 旅行社网站策划做网站编辑好还是美工好
  • 珠海做网站找哪家好在线磁力搜索神器