解读 DelayExecution

本文深入探讨了DelayExecution的概念,解释了如何通过延迟执行来优化程序性能,尤其是在处理大量数据或复杂计算时的重要性。同时,文章还会介绍相关工具和技术,帮助开发者在实践中有效地运用这一策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解读 DelayExecution


//----- (100E6897) --------------------------------------------------------
__int32 __stdcall Windows::Rtl::SystemImplementation::DelayExecution(Windows::Rtl::SystemImplementation *this, unsigned __int64 a2)
{

  BUCL::CMultiplier<unsigned __int64,BUCL::Rtl::CCallDisposition>::Multiply(
    &v9,
    (int)&Interval,
    (unsigned int)this,
    a2,
    0x2710u,
    0);
  v2 = v9;
  if ( v9 < 0 )
    return v2;
  if ( Interval.QuadPart > 0x7FFFFFFFFFFFFFFFui64 )
  {
    v3 = 794;
    v4 = "Ticks <= (0x7fffffffffffffff)";
    v2 = -1073741675;
LABEL_6:
    v9 = v2;
    v7 = v3;
    v8 = v4;
    Interval.LowPart = (DWORD)"base\\wcp\\sil\\merged\\ntu\\ntsystem.cpp";
    Interval.HighPart = (LONG)"Windows::Rtl::SystemImplementation::DelayExecution";
    Windows::ErrorHandling::Rtl::CBaseFrame<Windows::ErrorHandling::Rtl::CVoidRaiseFrame>::ReportErrorOrigination(
      (int *)&v9,
      (int)&Interval);
    return v2;
  }
  Interval.QuadPart = -Interval.QuadPart;
  v2 = NtDelayExecution(0, &Interval);
  if ( v2 < 0 )
  {
    v3 = 797;
    v4 = "::NtDelayExecution(0, &Timeout)";
    goto LABEL_6;
  }
  return 0;
}


//----- (100E5138) --------------------------------------------------------
unsigned __int64 *__thiscall Windows::Rtl::SystemImplementation::CalculateExecutionDelay(void *ecx0)
{

  v1 = (30 - (signed int)ecx0) / 0xAu;
  if ( v1 >= 3 )
    v1 = 2;
  result = (&s_rgSharingViolationWaitMilliseconds)[v1];
  v3 = dword_10045F04[2 * v1];
  return result;
}
// 10045F00: using guessed type unsigned __int64 *s_rgSharingViolationWaitMilliseconds;
// 10045F04: using guessed type int dword_10045F04[];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值