对64位长整形赋值为原子操作
来源:互联网 发布:百度贴吧加载数据失败 编辑:程序博客网 时间:2024/05/18 03:26
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <unistd.h>
#include <pthread.h>
#define G_THREAD_NUM 5
void* add_main(void* arg);
void* del_main(void* arg);
void print_glo();
unsigned long long g_uint64_n;
unsigned long long g_tmp1 = 0;
unsigned long long g_tmp2 = 0xffffffffffffffffLL;
void* write_main(void* arg)
{
unsigned long long tmp = g_tmp1;
while(1){
g_uint64_n = tmp;
}
return NULL;
}
void* read_main(void* arg)
{
while(1){
g_uint64_n = g_tmp2;
}
return NULL;
}
void print_glo()
{
unsigned long long tmp;
unsigned int l;
unsigned int r;
while(1){
tmp = g_uint64_n;
l = tmp >> 32;
r = tmp;
if(l != r){
printf("left:%x,right:%x\n", l, r);
printf("assert:%llx\n", tmp);
}
}
}
int main()
{
int i;
pthread_t add[G_THREAD_NUM];
pthread_t del[G_THREAD_NUM];
for(i=0; i<G_THREAD_NUM; i++)
pthread_create(&add[i], NULL, write_main, NULL);
for(i=0; i<G_THREAD_NUM; i++)
pthread_create(&del[i], NULL, read_main, NULL);
print_glo();
return 0;
}
- 对64位长整形赋值为原子操作
- 32位JVM对long类型的赋值不是原子性操作
- Java中对非原子的64位操作
- 64位原子操作add
- C语言的赋值++是否为原子操作
- 长整形转换为字符串
- 原子位操作
- 原子位操作
- 原子位操作
- linux原子/位操作
- 原子位操作
- 迅为Exynos4412开发板例程及注释——原子操作与原子位操作
- 将字符串转换为长整形
- mac地址转换为长整形
- C语言赋值语句是不是原子操作?
- C语言赋值语句是不是原子操作?
- C语言赋值语句是不是原子操作?
- 证明32位java对long和double的写操作不是原子性的
- Android Fragment学习笔记(一)
- 利用php调用C语言 扩展PHP的功能
- linux下截图工具
- python语法 之 循环迭代
- 数据库语句 select * from table where 1=1 的用法和作用
- 对64位长整形赋值为原子操作
- editplus替换空白行的正则表达式
- jquery 查找类似autoComplete 实现模糊查询
- Android Fragment学习笔记(二)
- mysql 和 mongo db 语法对比
- 出现bad interpreter:No such file or directory的原因
- java 驱动调度 电梯调度算法
- winform 打包自动安装数据库
- 最近一个项目用到PostgresSQl数据库,有些不同于oracle数据库,尤其时间处理上,结合PostgreSQL手册以及网上转载些资料,如下,方便开发中用到