我正在寻找解决方案如何在线程完成时打破无限循环。代码很复杂,所以我只展示你的主要部分。 看下面
for(;;){ if(stan==false)
pthread_create(&counter, NULL, count_me, NULL);
//to create thread only once in loop
stan=true;
move=getchar();
//(...) action.... doesn't matter
}
如您所见,main正在等待用户在getchar()函数中移动。我想在创建一个帖子10秒后打破这个循环。
线程def下面
void *count_me(void *threadid)
{
sleep(10);
pthread_exit(NULL);
}
thx求助
答案 0 :(得分:0)
一种简单的方法是添加一个由线程退出时设置的标志,然后主线程可以检查这个标志并调用pthread_join
并跳出循环。
答案 1 :(得分:0)
for(;;)
{
if(breakloop != 0)
{
if(stan==false)
pthread_create(&counter, NULL, count_me, NULL);
//to create thread only once in loop
stan=true;
move=getchar();
//(...) action.... doesn't matter
}
else
{
break;
}
}
这应该有效。如果要打破循环,请将breakloop更改为1或其他内容。在您的情况下,例如创建一个计时器。