【问题标题】:SleepConditionVariableCS equivalent ON XP在 XP 上等效的 SleepConditionVariableCS
【发布时间】:2015-12-03 23:17:14
【问题描述】:

我正在使用SleepConditionVariableCS、WakeConditionVariable 和WakeAllConditionVariable 实现一些功能。 但是 Windows XP 不支持这些 API。

Wait()
{
   SleepConditionVariableCS(&mCondition, &myCriticalSection, INFINITE);
}

WakeSingleThread()
{
    WakeConditionVariable(&mCondition);
}  

WakeAllThreads()
{
    WakeAllConditionVariable(&mCondition);
}

我想知道如何在 XP 上编写等效代码。

【问题讨论】:

    标签: c++ multithreading winapi


    【解决方案1】:

    看看您是否可以使用 XP 平台上可用的many wait functions 之一执行等效任务。

    我对那些特定于 Windows 的条件变量函数并不完全熟悉,但我敢打赌,您可以使用 WaitForObject 执行类似的任务。您需要自己监控情况并调用 SetEvent() 来通知等待代码唤醒。

    在我切换到 C++ 11 线程和同步原语之前,我有一个封装了基本等待和信号功能的包装类。添加评估条件和基于它的信号的机制应该不会做太多工作,尽管我认为您将不得不根据条件旋转。我不确定我是否知道解决方法。

    【讨论】:

    • 不知道详细回答的可以不用回答。这个“答案”本质上说,“你可以做到这一点,只要你自己解决”。这不是我们在这里寻找的真正答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2014-02-06
    • 1970-01-01
    • 2012-12-05
    • 2013-03-10
    • 2016-01-15
    相关资源
    最近更新 更多