无锁编程

 1 #ifndef MUTEX_CLASS_H
 2 #define MUTEX_CLASS_H
 3 
 4 class mutex_class
 5 {
 6 public:
 7     mutex_class();
 8     void lock();
 9     void unlock();
10 
11 private:
12     //以下为使用,和一般的锁差不多
13     int MUTEX_VALUE;
14 };
15 
16 #endif // MUTEX_CLASS_H
 1 #include "mutex_class.h"
 2 #include <sched.h>
 3 
 4 #define LOCK_VALUE  0
 5 #define   UNLOCK_VALUE 1
 6 //nt MUTEX_VALUE  = LOCK_VALUE;
 7 #define FREE_LOCK(MUTEX_VALUE_LOCK)\
 8     while (!(__sync_bool_compare_and_swap (\
 9               &MUTEX_VALUE_LOCK,LOCK_VALUE, \
10               UNLOCK_VALUE) )) \
11                  sched_yield();
12 
13  #define FREE_UNLOCK(MUTEX_VALUE_LOCK)\
14          __sync_bool_compare_and_swap (&MUTEX_VALUE_LOCK, UNLOCK_VALUE, LOCK_VALUE);
15 
16 
17 
18 
19 mutex_class::mutex_class()
20 {
21     MUTEX_VALUE = LOCK_VALUE;
22 }
23 
24 void mutex_class::lock()
25 {
26     FREE_LOCK(MUTEX_VALUE)
27 }
28 
29 void mutex_class::unlock()
30 {
31     FREE_UNLOCK(MUTEX_VALUE)
32 }

转载于:https://www.cnblogs.com/sangzaohaishui/p/4483313.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值