gpt4 book ai didi

c++ - 如何在 Linux 上的 c 中休眠或暂停 PThread

转载 作者:IT老高 更新时间:2023-10-28 21:55:47 28 4
gpt4 key购买 nike

我正在开发一个执行多线程的应用程序。我的一个工作线程在小部件上显示图像。另一个线程播放声音。我想在按钮单击事件上停止/暂停/暂停/休眠线程。与单击视频播放器播放/暂停按钮时相同。我正在使用 pthread 库在 linux 平台上开发我的应用程序。

谁能告诉我如何实现线程暂停/暂停?

最佳答案

您可以使用互斥体、条件变量和共享标志变量来执行此操作。假设这些是全局定义的:

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);

关于c++ - 如何在 Linux 上的 c 中休眠或暂停 PThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1606400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com