测试内存屏障存在
来源:互联网 发布:minitab 前后数据分析 编辑:程序博客网 时间:2024/05/16 23:32
测试内存屏障存在:
#include <windows.h> #include <stdio.h> #include <assert.h> typedef unsigned char u8; typedef signed char s8; typedef unsigned short u16; typedef signed short s16; typedef unsigned int u32; typedef signed int s32; BOOL state[2]; u8 turn; static u32 count = 0; u32 val = 1000000; #define MEM_BARRIER() do {__asm {mfence}}while(0) //#define MEM_BARRIER() void lock(int id){state[id] = TRUE; turn = 1 - id; MEM_BARRIER(); while((turn == (1 - id)) && state[1 - id]); }void unlock(int id){state[id] = FALSE; }DWORD WINAPI ThreadProc(LPVOID args) { short id = *(int*)args; u32 num = 0; while(num++ < val) { lock(id);count++; unlock(id);} return 0; } int main(int argc, char* argv[]) { HANDLE hThread[2]; while(1) { int i=0,j=1;count = 0; turn = 0; state[1] = state[0] = FALSE; hThread[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, &i, CREATE_SUSPENDED, NULL); SetThreadAffinityMask( hThread[0], 0x01 ); hThread[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, &j, CREATE_SUSPENDED, NULL); SetThreadAffinityMask( hThread[1], 0x02 ); ResumeThread(hThread[0]); ResumeThread(hThread[1]); WaitForMultipleObjects(2, hThread, TRUE, INFINITE); if(count != 2000000) { printf("-----------\n");//__asm {int 3} } } return 1; }
0 0
- 测试内存屏障存在
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- 内存屏障
- XMG 让一张图片由两个控件显示出来
- Spark-Streaming处理Kafka数据——封装成对象处理
- 希尔排序
- Java实现将一个文件进行压缩
- php与Java的比较
- 测试内存屏障存在
- X264码率控制总结1——ABR,CQP,CRF
- #版本管理工具使用总结(git,svn,hg)
- 数据库SQL优化大总结之 百万级数据库优化方案
- 通用单链表C实现
- kali
- Python获取文件夹下所有的文件路径列表
- H.264 open-GOP
- 引用程序集没有强名称解决办法