关于队列传输大块数据发送问题

在队列传输大块数据例程中

    /* 创建队列: 长度为1,数据大小为4字节(存放一个char指针) */
    xQueue = xQueueCreate( 1, sizeof(char *) );

疑问:


队列的长度为1,不是说队列只能存储一个数据吗?
任务A写入数据,任务C就要读出数据才能保持数据包的完整性吗?

执行如下是语句是如何能直接打印出字符串的?难倒是传入buffer地址,就不用管队列长度吗?直到读出buffer所有数据才会执行下一条语句吗 if( xStatus == pdPASS )?
image

		xStatus = xQueueReceive( xQueue, &buffer, xTicksToWait); /* 得到buffer地址,只是4字节 */

		if( xStatus == pdPASS )
		{
			/* 读到了数据 */
			printf("Get: %s", buffer);
		}

image