【问题标题】:How to check SDL condition variables is waiting or not?如何检查 SDL 条件变量是否正在等待?
【发布时间】:2014-01-16 10:52:27
【问题描述】:

我正在编写一个 SDL 多线程应用程序。我的应用程序有一些线程使用 SDL_CondWait 等待信号。

SDL_LockMutex(mutex);
SDL_CondWait(cond,mutex);
SDL_UnlockMutex(mutex);

当用户退出时,我想唤醒线程让应用程序退出。但是,当我使用 SDL_CondSignal 向条件变量发出信号时,应用程序有时会出错。

SDL_CondSignal(cond);

我猜那是因为在那一刻,条件变量没有等待。

我的问题是如何检查 SDL 条件变量是否正在等待?

【问题讨论】:

    标签: multithreading sdl mutex conditional-statements


    【解决方案1】:
    struct SDL_cond
    {
        SDL_mutex *lock;
        int waiting;
        int signals;
        SDL_sem *wait_sem;
        SDL_sem *wait_done;
    };
    

    waiting struct 字段保存被阻塞的线程数量。 另外,如果你想唤醒所有线程,你应该调用SDL_CondBroadcastSDL_CondSignal 只唤醒 一个 线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多