各线程同步操作性能列表

执行100w次的结果(单位:微妙)
------------------------------------------------------------------------------------
线程 volatile读 volatile写 InterlockedInc  CS SRWLock共享 SRWLock独占 互斥量
  1     8            8               35                 66      66                       67       1060
  2     8           76             153                268    134                   148      11082
  4     9           145           361                768    244                   307      23785


volatile读 long lvalue = gv_value;

volatile写 gv_value = 0;

InterlockedIncrement(&gv_value);

EnterCriticalSection(&cs);
gv_value = 0;
LeaveCriticalSection(&cs);

AcquireSRWLockShared/Exclusive(&g_srwlock);
gv_value = 0;
ReleaseSRWLockShared/Exclusive(&g_srwlock);

WaitForSingleObject(&g_hMutex, INFINITE);
gv_value = 0;
RleaseMutex(g_hMutex);

如果希望应用程序获得最佳性能,那么首先应该尝试不要共享数据,然后依次使用
volatile读取,volatile写入,Interlocked API, SRWLock以及关键段,当前仅当
所有这些都不满足要求的时候再使用内核对象。

 

来自Jeffrey Riched《windows核心编程(5)》的数据,录在这里备查。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值