线程里面的休眠函数有问题
情况是这样:
我在程序里面通过if(pthread_create(&ntid,NULL,do_time,NULL)!=0)
{ printf("can't creat new pthread\n");
exit(1);
}
创建了一个线程,线程函数如下:这个函数的作用是这样的:每隔20秒检查一下countID的值,如果值没有发生变化,则输出goose delay。
void *do_time()
{
while(1)
{
sleep(20);
if(countID==1)//第一次计数,不进行比较,只将countID赋给countID_pro,
{
countID_pro=countID;
printf("goose delay\n");
}
else
{
if(countID==countID_pro) //在第二次计数之后 进行比较
{
printf("goose delay\n");
countID_pro=countID;
}
}
}
但是现在的情况是,如果在第二次技术之后没有再进行计数的话,程序会每隔不定的时间进行打印 goose delay,没有任何规律。
这是怎么回事?