exchange服务器之InterlockedExchange
白羽 2018-12-11 来源 :网络 阅读 1127 评论 0

摘要:本文将带你了解exchange服务器之InterlockedExchange,希望本文对大家学Exchange有所帮助。

    本文将带你了解exchange服务器之InterlockedExchange,希望本文对大家学Exchange有所帮助。


<

 
 
LONG   InterlockedExchange(    IN OUT PLONG  Target,    IN LONG  Value    ); 

 
InterlockedExchange(a,b)能以原子操作的方式交换俩个参数a, b,并返回a以前的值;因为InterlockedExchange
 是原子函数,不会要求中止中断,所以交换指针的方式是安全的。
假设有线程1和线程2调用f()函数,线程1先调用到InterlockedExchange(&g, TRUE);线程2再调用时,函数InterlockedExchange()总返回TRUE,则线程2sleep(0);而直到线程1调用InterlockedExchange(&g, FALSE);后线程2才可能由于调用InterlockedExchange(&g,, TRUE),返回FALSE而退出循环接着工作。这样在//进行其他的操作这里就能操作共享数据而不会引起争议。当然这种方法会浪费cpu时间,因为cpu要不断地执行InterlockedExchange()函数,使用时应注意。
// 线程1InterlockedExchange(&g, TRUE);    // 步一//..InterlockedExchange(&g, FALSE);    // 步三   //线程2while(TRUE == InterlockedExchange(&g, TRUE))// 步二{ sleep(0); // 等待} // 线程2跳出循环了           // 步四

 
 
Windows Driver Kit: Kernel-Mode Driver Architecture
InterlockedExchange

The InterlockedExchange routine sets an integer variable to a given value as an atomic operation.
LONG 
  InterlockedExchange(
    IN OUT PLONG  Target,
    IN LONG  Value
    );

Parameters
Target  Pointer to a variable to be set to the supplied Value as an atomic operation. Value  Specifies the value to which the variable will be set. 
 
Return Value
InterlockedExchange returns the value of the variable at Target when the call occurred.
Headers
Declared in Wdm.h. Include Wdm.h, Ntddk.h, or Ntifs.h. 
Comments
InterlockedExchange should be used instead of ExInterlockedExchangeUlong, because it is both faster and more efficient. 
InterlockedExchange is implemented inline by the compiler when appropriate and possible. It does not require a spin lock and can therefore be safely used on pageable data.
A call to InterlockedExchange routine is atomic only with respect to other InterlockedXxx calls. 
Interlocked operations cannot be used on non-cached memory.
Callers of InterlockedExchange can be running at any IRQL.    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标系统运维之Exchange频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程