高手帮忙看下buffer队列的问题
我要管理一个队列,队列里面的数据是一个buffer(一个很大的数组short[4608])
请问这个队列的进队操作和出队操作改如何写? 我想的是把数组的头指针进行进队和出队,但是出队了的数据都为空~~~
以下是我进队和出队的代码,高手帮忙看看应该如何修改.
int QueueIN(SqQueue *sq, QUEUE_ELEMENT_TYPE qdata)
{
if(QueueFull(sq))
{
printf("The queue is full!\n");
return -1;
}
printf("in~~~~~~~~~~~~~~~~~~~~~~~~~\n");
sq->rear = (sq->rear + 1) % QUEUE_SIZE;
sq->queue[sq->rear] = qdata;
sq->qcount ++;
return 0;
}
int QueueOUT(SqQueue *sq, QUEUE_ELEMENT_TYPE *qdata)
{
if(QueueEmpty(sq))
{
printf("The queue is empty!\n");
return -1;
}
printf("out~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
sq->front = (sq->front + 1) % QUEUE_SIZE;
//*qdata = sq->queue[sq->front];
memcpy(qdata, sq->queue[sq->front], 4608);
sq->qcount --;
return 0;
}
这是一个全局的队列,进队和出队操作是在不同的线程中完成的.
//主线程
short pPCMBufferIn[4][2304*2] = {0};
memcpy(pPCMBufferIn, ((PWAVEHDR)wParam)->lpData, dwBytesRecorded); //打断点显示pPCMBufferIn里面有数据
for (int i = 0; i<4; i++)
{
QueueEnter(&bufferQueue, pPCMBufferIn[i]);
}
//子线程
short pPCMBufferOut[4][2304*2] = {0};
QueueDelete(&bufferQueue, &pPCMBufferOut[i]); //出来的数据都是0,不知道为什么