线程间进行同一据处理

 

InterlockedCompareExchange

  InterlockedCompareExchange属于互锁函数
  类似的还有下面的几个
  (1) LONG InterlockedExchangeAdd ( LPLONG Addend, LONG Increment );
  Addend为长整型变量的地址,Increment为想要在Addend指向的长整型变量上增加的数值(可以是负数)。这个函数的主要作用是保证这个加操作为一个原子访问。
  (2) LONG InterlockedExchange( LPLONG Target, LONG Value );
  用第二个参数的值取代第一个参数指向的值。函数返回值为原始值。
  (3) PVOID InterlockedExchangePointer( PVOID *Target, PVOID Value );
  用第二个参数的值取代第一个参数指向的值。函数返回值为原始值。
  (4) LONG InterlockedCompareExchange(
  LPLONG Destination, LONG Exchange, LONG Comperand );
  如果第三个参数与第一个参数指向的值相同,那么用第二个参数取代第一个参数指向的值。函数返回值为原始值。
  (5) PVOID InterlockedCompareExchangePointer (
  PVOID *Destination, PVOID Exchange, PVOID Comperand );
  如果第三个参数与第一个参数指向的值相同,那么用第二个参数取代第一个参数指向的值。函数返回值为原始值。
比如如果两个线程同时对数据date进行操作,在同一时刻两程序对同一数据date = 0进行操作date++, 如果线程1操作date++后date == 1,马上线程2进行也同时执行到date++,此时就会出现date 只增加了1
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值