C++多线程4互锁函数

本文介绍了C++中使用WinAPI互锁函数进行多线程同步,强调其速度优势。通过示例展示InterlockedExchangeAdd和InterlockedExchange在实现线程安全自增和循环锁中的应用,确保全局变量在多线程环境下的正确性。
摘要由CSDN通过智能技术生成
多线程同步之WIN API互锁函数 (可以避免使用CriticalSection或Mutex)

一 互锁函数

  互锁函数的家族十分的庞大,可以查看msdn(http://msdn2.microsoft.com/en-us/library/ms686360.aspx)以InterLocked开始的函数都是户数函数。使用互锁函数的优点是:他的速度要比其他的CriticalSection,Mutex,Event,Semaphore快很多。

二 简单实例

  使用一些实例说明部分互锁函数的使用:

1) LONG InterlockedExchangeAdd( PLONG plAddend,LONG Increment);

简单实例,在线程函数中对全局的变量自增,在开始使其为0,在线程都执行完以后输出全局变量的值,如果我们不使用互锁函数,则最后输出的结果,大部分情况是不正确的,比如我们一共有10000个线程的话,则全局变量的值一般是比10000要小;但是如果我们使用互锁函数来实现自增,则就快速的实现了线程安全,最后输出的全局变量一定是10000.

#include <windows.h>
#include <process.h>
#include <stdio.h>

#define THREAD_MAX 100000

int g_x = 0;

unsigned __stdcall ThreadEntity(void * pVoid)
{
  g_x++;
  //InterlockedExchangeAd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值