atomic_fetch_and(i, v)

atomic_fetch_and是一个原子操作函数,用于在多线程环境中执行位与操作(AND操作)。它能够保证在并发情况下对共享变量进行安全地操作,避免出现数据竞争和不一致性问题。具体来说,atomic_fetch_and函数会将一个指定值 i 和共享变量的当前值 v(v_old) 进行位与操作,并将结果存储回该共享变量中 v_new ,同时返回原始的共享变量值v_old。这样可以确保对共享变量的操作是原子的,不会被其他线程中断或干扰。

在C++的标准库中,std::atomic_fetch_and函数可用于执行原子的位与操作。在其他编程语言或库中也可能存在类似功能的原子操作函数。通过使用atomic_fetch_and函数,可以确保对共享变量进行位与操作时的线程安全性,同时避免使用显式的锁来保护共享变量,从而提高程序的性能和并发性。

#define EVENT_17  (1<< 17)

int events_value = 0x80000;

example:   if (atomic_fetch_and(~EVENT_17  , events_value) & EVENT_17) {

}

上面例子的意思是,先拷贝events_value一份用于后面判断这个原始的events_value的事件17是否为1(发生)。拷贝完后判断之前这个事件17就可以被清零了,以待下次事件产生后给它置1。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值