博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无锁编程
阅读量:6117 次
发布时间:2019-06-21

本文共 994 字,大约阅读时间需要 3 分钟。

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

你可能感兴趣的文章
分享一个 @user 前端插件
查看>>
随笔 - Internet缓存文件
查看>>
SpringJUnit4加载类目录下(src)和WEF-INF目录下的配置文件
查看>>
AssetManager中的路径参数不能包含"assets/"
查看>>
Win10 UWP应用发布流程
查看>>
css3动画中的steps值详解
查看>>
NetSetMan IP地址切换工具
查看>>
webservice一片:其中在外线呼叫数据,查看返回数据
查看>>
在SQL Server里如何进行页级别的恢复
查看>>
Android adjustresize全屏无效问题
查看>>
构造Nginx避免直接使用IP通路Webserver
查看>>
DJANGO:根据不同的环境,配置不同的SETTINGS文件,读取不同的DB,JENKINS,SALT配置
查看>>
Android API Level与sdk版本对照表
查看>>
计算机储存单元概念
查看>>
你真的会玩SQL吗?表表达式,排名函数
查看>>
VB6 获取和设置默认打印机
查看>>
mysql存储过程中遍历数组字符串的两种方式
查看>>
《Programming WPF》翻译 第8章 5.创建动画过程
查看>>
Oracle备份恢复之冷备份恢复与异机还原
查看>>
WebStorm文件类型关联设置
查看>>