gpt4 book ai didi

c - pthreads - 停止当前线程的执行并在特定事件后重新启动它们

转载 作者:行者123 更新时间:2023-12-02 08:53:57 24 4
gpt4 key购买 nike

我正在做一个关于 VoIP 的项目,我的 C 代码中有 pthreads。我需要启动 pthreads 并让它们工作,并在它们之间进行一些 sleep 。现在我的线程正在运行,当我从服务器获得 session 结束时,我需要停止正在运行的线程并从头开始重新启动它们。

我的代码看起来像这样:

void *recv_thread(void *arg)
{
/*receive the multimedia data and close the recv_thread when there is no more data to receive*/
}


void *send_thread(void *arg)
{
/*send the multimedia data*/
}

send_recv_data()
{

pthread_create(thread2, NULL, send_thread, NULL);
pthread_create(thread3, NULL, recv_thread, NULL);
}

void *first_thread(void *arg)
{
/*if some condition met the start the routine for creation of two threads one for receiving and one for sending data*/
if(cond == TRUE){
send_recv_data();
}

}
main()
{
pthread_create(thread1, NULL, first_thread, NULL);
}

我的问题是,一旦我收到来自其他用户代理的消息,它不再向我发送数据,那么我需要停止发送和接收线程,最后停止负责创建其他两个线程的 first_thread线程。一旦我停止了所有线程,我需要重新启动它们。我尝试使用互斥量和条件变量,但都无济于事。

关于如何克服这个问题的任何想法,可能是一小段简单的代码会更有帮助

谢谢

最佳答案

为什么需要启动和停止线程?通常最好让线程保持运行,并在它们没有有用的工作要做时让它们阻塞某些东西(例如条件变量)。

关于c - pthreads - 停止当前线程的执行并在特定事件后重新启动它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6436637/

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