タイマーの割り当てと割り当て解除のための 2 つの関数があります。
Allocate timer はタイマーを割り当て、割り当てられたタイマーに int を返します。
int allocate_timer(void)
{
int count = 0;
int allocated = 0;
/*Loop to find the first timer that is not allocated*/
for(count = 0; count< ARRAY_SIZE; count++)
{
if(allocated_timers[count] == '0')
{
/*When the next timer available timer is found it is set to allocated and timer is set to zero*/
allocated_timers[count] = '1';
timers[count] = 0;
break;
}
else if(allocated > ARRAY_SIZE - 1)
{
printf("No timers available\n");
exit(0);
}
else
{
allocated++;
}
}
/*Position of the allocated timer is returned*/
return count;
}
タイマーの割り当て解除、割り当て解除される位置への int を受け取ります
void deallocate_one_timer(int position)
{
if(TIMER_ALLOCATED == allocated_timers[position])
{
allocated_timers[position] = '0';
timers[position] = 0;
}
}
すでにある以上に堅牢にすることはできません。それらをより良くする方法について何かアドバイスはありますか?