gpt4 book ai didi

c - 如何终止无限循环(线程)

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:55 24 4
gpt4 key购买 nike

我对退出 while 循环有疑问。我正在编写代码,其中我正在创建两个线程,它打印字符串,而 main() 部分必须每 500 毫秒打印一次点 (".")。你能帮我在第二个线程终止后如何退出 while 循环,以便在输出中得到这样的东西吗:...你好...世界....结束

谢谢你的帮助。

int main() 
{
int mls = 0.5 ;
pthread_t thread1;
pthread_t thread2;

struktura param1 = { "Hello", 2};
struktura param2 = { "World", 4};

pthread_create( &thread1, NULL, thread, &param1);
pthread_create( &thread2, NULL, thread, &param2);

while(1)
{
printf(".");
fflush(stdout);
sleep(mls);
}

pthread_join(thread1, NULL);
pthread_join(thread2, NULL);

printf("THE END\n");
return 0;
}

最佳答案

在考虑了这个问题之后,我得出的结论是,如果主要用例是真正确保两个线程(线程“Hello”和线程“World”)都消失了,那么没有其他方法可以使用 pthread_join() 在两者上。

由于 pthread_join() 阻塞调用线程,自然的结论是启动第三个线程(线程“Dots”)来按要求绘制点。

第三个线程(线程“Dots”)然后由 main() 发出信号 - 线程等待其他两个线程(线程“Hello”和线程“World”)在它之后完成从对 pthread_join() 的两次阻塞调用返回。如果完成此操作,则第三个线程(线程“Dots”)将简单地结束。后者可以独立运行,因为没有人在等待它终止。

关于c - 如何终止无限循环(线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776233/

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