gpt4 book ai didi

c - 暂停/恢复另一个线程

转载 作者:行者123 更新时间:2023-12-04 12:14:55 28 4
gpt4 key购买 nike

我知道互斥锁可以作为一种实现,但是我想知道是否有一种方法可以像视频播放一样暂停/恢复另一个线程。当其他正在运行的线程很复杂时,此方法更易于编程。

最佳答案

SIGTSTP是用于暂停进程的信号,如果您有两个进程,则可以使用它,但是信号有几个缺点,因此我不建议您使用它们。对于受控的,稳定的方法,您必须自己使用互斥锁来进行操作,其中用户暂停播放会导致锁定互斥锁,而执行播放的线程会尝试锁定互斥锁。像这样:

static pthread_mutex_t mutex;

/* UI thread */
void g(void)
{
while(1) {
get_input();
if(user_wants_to_pause)
pthread_mutex_lock(&mutex);
else if(user_wants_to_resume)
pthread_mutex_unlock(&mutex);
}
}

/* rendering thread */
void f(void)
{
while(1) {
pthread_mutex_lock(&mutex);
/* if we get here, the user hasn't paused */
pthread_mutex_unlock(&mutex);
render_next_frame();
}
}


如果您需要在两个线程之间进行更多的通信,则可以使用标准IPC机制(例如管道)-然后可以基于此实现暂停和恢复。

关于c - 暂停/恢复另一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7806575/

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