多线程下变量原子操作的几种方法



多线程下变量原子操作的几种方法

Note:1.2两个方法主要用于应用中【2种操作的性能是第一种的7-8倍,性能上优于第一种】,第三个方法主要应用于驱动层的。

  1. 线程锁:如下例子:

       pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;

          pthread_mutex_lock(&count_lock);
          global_int++;
          pthread_mutex_unlock(&count_lock);

    2._sync_fetch_and_add系列函数是直接指令集的的函数,由GCC直接支持。他是锁住CPURAM之间的数据线来仿止其它的操作的。效率高,但会影响其多线程性能

    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);

    3.linux驱动中的并发控制技术----原子操作,自旋锁,读写自旋锁 ,顺序锁,RCU机制,信号量,完成量,互斥体等方式来实现原子级的操作。

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值