我正在制作一个路由协议,我需要为每个通过线程实现的邻居设置 30 秒的非阻塞计时器,这是示例代码。但是,我检查它的值 2 或 0 以区分线程是超时还是被我停止(我通过设置结构变量的值来停止线程。)
问题是,我的值没有传递回主函数,并且我知道的唯一连接解决方案是阻塞,但我需要非阻塞路由协议。任何帮助将不胜感激。谢谢。
struct arg_struct
{
int Wait_30sec;
int Alarm_port[5];
int index;
};
void* start_timer(void *arguments)
{
struct arg_struct *args = (struct arg_struct *)arguments;
int i;
clock_t endwait;
i = args->index;
endwait = clock() + args->Wait_30sec * CLOCKS_PER_SEC;
while (clock() < endwait && args->Alarm_port[i] == 0)
;
if(args -> Alarm_port[i]==0)
args -> Alarm_port[i]=2;
pthread_exit(NULL);
return NULL;
}