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

锦州做网站的公司十大洗脑广告

锦州做网站的公司,十大洗脑广告,做什么网站好,中山做百度网站的公司吗Atomic(原子操作与原子整数) 前置知识AtomicIntegerTget()getAndAdd()getAndSet() 关于原子操作实现无锁队列(lock-free-queue) 前置知识 happens-before: 用来描述两个操作的内存可见性 如果操作 X happens-before 操作 Y,那么 X 的结果对于…

Atomic(原子操作与原子整数)

  • 前置知识
  • AtomicIntegerT
    • get()
    • getAndAdd()
    • getAndSet()
  • 关于原子操作实现无锁队列(lock-free-queue)

前置知识

happens-before:

  • 用来描述两个操作的内存可见性 如果操作 X happens-before 操作 Y,那么 X 的结果对于 Y 可见

六种内存序:

typedef enum memory_order {memory_order_relaxed,   // relaxed不对执行顺序做保证memory_order_consume,   // consume暂时不鼓励使用 memory_order_consumememory_order_acquire,   // acquire本线程中,所有后续的读操作必须在本条原子操作完成后执行memory_order_release,   // release本线程中,所有之前的写操作完成后才能执行本条原子操作memory_order_acq_rel,   // acquire/release同时包含memory_order_acquire 和 memory_order_releasememory_order_seq_cst    // sequentially consistent保证指令的顺序一致执行,不打开编译器优化指令,按照正常的指令序执行
} memory_order;

gcc的原子操作__sync_(不推荐):使用这些原子操作gcc编译时要加上选项 -march=cpu-type

  • 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的值
  • type __sync_fetch_and_add (type *ptr, type value, ...)加,返回更新前的值
  • type __sync_fetch_and_sub (type *ptr, type value, ...)
  • type __sync_fetch_and_or (type *ptr, type value, ...)
  • type __sync_fetch_and_and (type *ptr, type value, ...)
  • type __sync_fetch_and_xor (type *ptr, type value, ...)异或
  • type __sync_fetch_and_nand (type *ptr, type value, ...)与非
  • type __sync_add_and_fetch (type *ptr, type value, ...)返回更新后的值
  • type __sync_sub_and_fetch (type *ptr, type value, ...)
  • type __sync_or_and_fetch (type *ptr, type value, ...)
  • type __sync_and_and_fetch (type *ptr, type value, ...)
  • type __sync_xor_and_fetch (type *ptr, type value, ...)
  • type __sync_nand_and_fetch (type *ptr, type value, ...)

原子操作__atomic:(C++11后推荐,使用内存序)

  • type __atomic_add_fetch(type *ptr, type val, int memorder)
  • type __atomic_sub_fetch(type *ptr, type val, int memorder)
  • type __atomic_and_fetch(type *ptr, type val, int memorder)
  • type __atomic_xor_fetch(type *ptr, type val, int memorder)
  • type __atomic_or_fetch(type *ptr, type val, int memorder)
  • type __atomic_nand_fetch(type *ptr, type val, int memorder)
  • type __atomic_fetch_add(type *ptr, type val, int memorder)
  • type __atomic_fetch_sub(type *ptr, type val, int memorder)
  • type __atomic_fetch_and(type *ptr, type val, int memorder)
  • type __atomic_fetch_xor(type *ptr, type val, int memorder)
  • type __atomic_fetch_or(type *ptr, type val, int memorder)
  • type __atomic_fetch_nand(type *ptr, type val, int memorder)
  • type __atomic_load_n (type *ptr,int memorder);_n表示加不加字节序memorder,
  • void__atomic_store_n (type *ptr, type val,int memorder);
  • type __atomic_exchange_n (type *ptr, type val,int memorder);
  • bool__atomic_compare_exchange_n (type *ptr, type *expected, type desired,bool weak, int success_memorder,int failure_memorder);
  • bool __atomic_test_and_set (void *ptr, int memorder)原子地更改 obj 所指向的 atomic_flag 的状态为设置( true )
  • void __atomic_clear (bool *ptr, int memorder)
  • void __atomic_thread_fence (int memorder)
  • bool __atomic_always_lock_free (size_t size, void *ptr)
  • bool __atomic_is_lock_free (size_t size, void *ptr)

谷歌规范const常量命名加k:const int kvalue


关于gcc的编译告警选项:
在这里插入图片描述

AtomicIntegerT

muduo::detail::AtomicIntegerT是noncopyable的派生类,不可拷贝

class AtomicIntegerT : noncopyable

类图:
在这里插入图片描述

  • volatile T value_: 用于原子操作的value_值,volatile表示直接从内存取,不从寄存器取,与该变量有关的运算,不要进行编译优化,以免出错
  • 所有其他成员函数都是通过get(), getAndAdd(), getAndSet()来实现的

get()

T get()
{// in gcc >= 4.7: __atomic_load_n(&value_, __ATOMIC_SEQ_CST)return __sync_val_compare_and_swap(&value_, 0, 0);
}

注意选项-march=cpu-type

getAndAdd()

T getAndAdd(T x)
{// in gcc >= 4.7: __atomic_fetch_add(&value_, x, __ATOMIC_SEQ_CST)return __sync_fetch_and_add(&value_, x);
}

注意选项-march=cpu-type

getAndSet()

T getAndSet(T newValue)
{// in gcc >= 4.7: __atomic_exchange_n(&value_, newValue, __ATOMIC_SEQ_CST)return __sync_lock_test_and_set(&value_, newValue);
}

注意选项-march=cpu-type

关于原子操作实现无锁队列(lock-free-queue)

无锁队列的实现

http://www.ds6.com.cn/news/40399.html

相关文章:

  • 成都网站设计得多少钱杭州seo首页优化软件
  • 自己做的网站怎么发布win7网络营销策略都有哪些
  • 内网网站开发费用爱上链外链购买交易
  • 阿里云网站实名认证友情链接交换系统
  • 网站域名注册证书搜索引擎优化seo网站
  • 求哪位大神发人和动物做愛视频网站网站权重是什么意思
  • 网站开发课题研究背景营销软件哪个好
  • 百度公众号河南整站百度快照优化
  • 如何接单做网站关键词排名优化公司成都
  • 中英文微信网站建设网络推广文案怎么写
  • 云南省城乡建设厅网站站长之家网站
  • 最新的即时比分百度关键词优化专家
  • 网站备案需要年检吗免费微信引流推广的方法
  • 专业网站建设机构网站如何在百度刷排名
  • 拓者设计吧注册还要钱合作seo公司
  • 网站后台示演国内重大新闻十条
  • 邓州网站建设恢复原来的百度
  • 微信服务号绑定网站吗排名
  • 做视频网站视频短片百度推广一天费用200
  • b2b平台的发展应以什么为中心谷歌seo是什么职业
  • asp网站文件营销策划方案模板范文
  • 学ui哪家培训机构好扬州seo优化
  • 网站建设与开发考试网址导航浏览器下载
  • 辽宁省建设工程信息网官网新网站入口官方广告sem是什么意思
  • 西宁网站开发深圳最新新闻事件今天
  • 专用主机方式建设网站竞价网站
  • 做外贸生意哪个网站好百度网盘资源共享
  • 网站建设华为怎么做一个网站出来
  • 建设部网站公示百度搜索收录入口
  • 服务器上的网站怎么做301蜜雪冰城推广软文