x86下的原子操作实现
来源:互联网 发布:网络新媒体专业 编辑:程序博客网 时间:2024/05/01 01:54
1.gnu lib提供原子操作的实现
#include <stdio.h>#include <pthread.h>#include <stdlib.h>static int count = 0;void *test_func(void *arg){ int i=0; for(i=0;i<20000;++i){// __sync_fetch_and_add(&count,1); count ++; } return NULL;}int main(int argc, const char *argv[]){ pthread_t id[20]; int i = 0; for(i=0;i<20;++i){ pthread_create(&id[i],NULL,test_func,NULL); } for(i=0;i<20;++i){ pthread_join(id[i],NULL); } printf("%d\n",count); return 0;}2.利用汇编自己实现
#include <stdio.h>#include <pthread.h>#include <stdlib.h>#define LOCK "lock ; "typedef struct { volatile int counter; } atomic_t;static __inline__ void atomic_inc(atomic_t *v){ __asm__ __volatile__( LOCK "incl %0" :"=m" (v->counter) :"m" (v->counter));}static atomic_t count = {0};void *test_func(void *arg){ int i=0; for(i=0;i<20000;++i){ atomic_inc(&count); } return NULL;}int main(int argc, const char *argv[]){ pthread_t id[20]; int i = 0; for(i=0;i<20;++i){ pthread_create(&id[i],NULL,test_func,NULL); } for(i=0;i<20;++i){ pthread_join(id[i],NULL); } printf("%d\n",count.counter); return 0;}
0 0
- x86下的原子操作实现
- java 原子操作在x86下的实现
- x86平台原子操作API的实现原理
- ARM下的原子操作实现原理
- x86平台原子操作原理
- 原子操作与 x86 上的 lock 指令前缀
- x86和arm架构原子操作的区别
- x86和arm架构原子操作的区别
- x86和arm在原子操作上的差别
- 原子操作的实现原理
- 原子操作的实现原理
- 原子操作的实现原理
- 原子操作的实现原理
- 原子操作的实现原理
- 原子操作的实现原理
- 原子操作的实现原理
- linux用户空间下的原子操作
- linux内核原子操作的实现
- 儿童业态放公司梵蒂冈仿盛大
- Cocos2d-x中移植到Android真机上屏幕方向设置
- css代码是放在html代码的哪个位置
- vim简明教程
- 解决FTP上传时报未能解析远程名称或未能解析域名错误方
- x86下的原子操作实现
- 职场35岁现象:迄今我看过最好的关于职业规划的文章
- 动态申请二维数组
- 就规划局规划局规划局规划局个环境规划豆腐干豆腐
- 合并两个有序数组
- Lucene3.6学习记录 索引的增删改查(二)
- document.cookie的使用
- UITableView的一些属性
- 你还在问android横竖屏切换的生命周期?