我尝试使用数组为令牌创建一个循环队列,以优先处理读取函数的过程。我到目前为止使用的是这段代码写入数组读取:
#define QUEUE_ELEMENTS 5
#define QUEUE_SIZE (QUEUE_ELEMENTS + 1)
int Queue[QUEUE_SIZE];
int QueueIn, QueueOut;
int QueuePut(uint8 new_token)
{
if(QueueIn == (( QueueOut - 1 + QUEUE_SIZE) % QUEUE_SIZE))
{
return -1; /* Queue Full*/
}
Queue[QueueIn] = new_token;
QueueIn = (QueueIn + 1) % QUEUE_SIZE;
return 0; // No errors
}
int QueueGet(uint8 *old_token)
{
if(QueueIn == QueueOut)
{
return -1; /* Queue Empty - nothing to get*/
}
*old_token = Queue[QueueOut];
QueueOut = (QueueOut + 1) % QUEUE_SIZE;
return 0; // No errors
}
我需要的是一个数组单元格的索引,我将我的值写入返回,我想用它来读取。要将索引设置为2,从索引为2的单元格读取,并在使用新值更新单元格编号2中的值之后。 我怎样才能做到这一点? 这是我需要使用令牌执行该队列数组的交互图。对于该方法获取令牌,我需要获取数组的索引,我将我的副本放入数组中,但我认为我的代码中的索引是 QueueIN 。 only the critical part