我正在开发一个我做多线程的应用程序。我的一个工作线程在小部件上显示图像。另一个线程播放声音。我想在按钮单击事件上停止/暂停/暂停/休眠线程。它与我们点击视频播放器播放/暂停按钮时相同。我在linux平台上用c++开发我的应用程序,使用pthread库进行线程处理。
谁能告诉我如何实现线程暂停/挂起?
发布于 2009-11-19 12:08:25
您可以使用互斥、条件变量和共享标志变量来完成此操作。让我们假设这些是全局定义的:
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int play = 0;你可以这样组织你的回放代码:
for(;;) { /* Playback loop */
pthread_mutex_lock(&lock);
while(!play) { /* We're paused */
pthread_cond_wait(&cond, &lock); /* Wait for play signal */
}
pthread_mutex_unlock(&lock);
/* Continue playback */
}然后,要玩,你可以这样做:
pthread_mutex_lock(&lock);
play = 1;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);然后暂停:
pthread_mutex_lock(&lock);
play = 0;
pthread_mutex_unlock(&lock);发布于 2009-10-22 18:52:22
您的线程定期从UI轮询“消息”。换句话说,一个线程中的UI将动作消息发布到工作线程,例如音频/视频。
https://stackoverflow.com/questions/1606400
复制相似问题