当前位置: 首页 > news >正文

电子商务网站推广方案免费收录网站

电子商务网站推广方案,免费收录网站,wordpress路由规则,一元云淘网站开发队列Queue 队列Queue可以用在“任务到任务”、“任务到中断”、“中断到任务”直接传输信息。 队列的阻塞访问(可指定超时时间) 只要知道队列的句柄,任务、ISR都可以读、写该队列。任务读写队列时,如果读写成功了就马上进入就绪态…

队列Queue

队列Queue可以用在“任务到任务”、“任务到中断”、“中断到任务”直接传输信息。

队列的阻塞访问(可指定超时时间)

只要知道队列的句柄,任务、ISR都可以读、写该队列。任务读写队列时,如果读写成功了就马上进入就绪态,否则阻塞直到超时。

可以从多个任务读写队列。当多个任务读取空队列时,这些任务都会进入阻塞状态。当队列中有数据时,优先级最高的任务会先进入就绪态,同优先级时等待时间最久的任务会先进入就绪态。写队列也类似。

创建队列

动态创建队列
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );
// uxQueueLength:队列长度,最多能存放多少个数据(item)
// uxItemSize:每个数据(item)的大小,单位为字节
// 返回值:
//		非0:成功,返回句柄
//		NULL:失败,内存不足

静态创建队列
QueueHandle_t xQueueCreateStatic( UBaseType_t uxQueueLength, UBaseType_t uxItemSize, uint8_t *pucQueueStorageBuffer, StaticQueue_t *pxQueueBuffer );
// uxQueueLength:队列长度,最多能存放多少个数据(item)
// uxItemSize:每个数据(item)的大小,单位为字节
// pucQueueStorageBuffer:如果uxQueueLength非0,该参数必须指向一个uint8_t数组,数组大小至少为uxQueueLength * uxItemSize
// pxQueueBuffer:必须执行一个StaticQueue_t结构体,用来保存队列的数据结构
// 返回值:
//		非0:成功,返回句柄
//		NULL:失败,因为pxQueueBuffer为NULL
// 示例代码
#define QUEUE_LENGTH 	10
#define ITEM_SIZE 		sizeof( uint32_t )// xQueueBuffer用来保存队列结构体
StaticQueue_t xQueueBuffer;// ucQueueStorage 用来保存队列的数据
// 大小为:队列长度 * 数据大小
uint8_t ucQueueStorage[ QUEUE_LENGTH * ITEM_SIZE ];void vATask( void *pvParameters )
{QueueHandle_t xQueue1;// 创建队列: 可以容纳QUEUE_LENGTH个数据,每个数据大小是ITEM_SIZExQueue1 = xQueueCreateStatic( 	QUEUE_LENGTH,ITEM_SIZE,ucQueueStorage,&xQueueBuffer );
}

队列复位

队列刚被创建时,里面是没有数据的。使用过程中可以调用xQueueReset()把队列恢复为初始状态。

// pxQueue : 复位哪个队列;
// 返回值: pdPASS(必定成功)
BaseType_t xQueueReset( QueueHandle_t pxQueue);

删除队列

只能删除使用动态方法创建的队列。

void vQueueDelete( QueueHandle_t xQueue );

写队列

可以把数据写到队列头部/尾部。函数都有两个版本:在任务中使用、在ISR中使用。

/* 等同于xQueueSendToBack。往队列尾部写入数据,如果没有空间,阻塞时间为xTicksToWait */
BaseType_t xQueueSend(QueueHandle_t xQueue,const void *pvItemToQueue,TickType_t xTicksToWait
);/* 往队列尾部写入数据,如果没有空间,阻塞时间为xTicksToWait */
BaseType_t xQueueSendToBack(QueueHandle_t xQueue,const void *pvItemToQueue,TickType_t xTicksToWait
);/* 往队列尾部写入数据,此函数可以在中断函数中使用,不可阻塞 */
BaseType_t xQueueSendToBackFromISR(QueueHandle_t xQueue,const void *pvItemToQueue,BaseType_t *pxHigherPriorityTaskWoken
);/* 往队列头部写入数据,如果没有空间,阻塞时间为xTicksToWait */
BaseType_t xQueueSendToFront(QueueHandle_t xQueue,const void *pvItemToQueue,TickType_t xTicksToWait
);/* 往队列头部写入数据,此函数可以在中断函数中使用,不可阻塞 */
BaseType_t xQueueSendToFrontFromISR(QueueHandle_t xQueue,const void *pvItemToQueue,BaseType_t *pxHigherPriorityTaskWoken
);
参数说明
xQueue队列句柄
pvItemToQueue数据指针
xTicksToWait

如果队列满则无法写入新数据,可以让任务进入阻塞状态,xTicksToWait表示阻塞的最大时间(Tick Count)。

如果设为0,无法写入数据时函数会立即返回;

如果设为portMAX_DELAY,则会一直阻塞直到有空间可写

返回值

pdPASS:数据成功写入了队列。

errQUEUE_NULL:写入失败,因为队列满了。

读队列

函数都有两个版本:在任务中使用、在ISR中使用。

BaseType_t xQueueReceive( 	QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait 
);BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue,void *pvBuffer,BaseType_t *pxTaskWoken
);
参数说明
xQueue队列句柄
pvBuffer数据指针
xTicksToWait

如果队列空则无法读取新数据,可以让任务进入阻塞状态,xTicksToWait表示阻塞的最大时间(Tick Count)。

如果设为0,无法读取数据时函数会立即返回;

如果设为portMAX_DELAY,则会一直阻塞直到可读

返回值

pdPASS:从队列读出数据了。

errQUEUE_NULL:读取失败,因为队列空。

队列查询

可以查询队列中有多少个数据、有多少空余空间。

/* 返回队列中可用数据的个数 */
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue );/* 返回队列中可用空间的个数 */
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue );

队列覆盖

当队列长度为1时,可以使用xQueueOverwrite()或xQueueOverwriteFromISR()来覆盖数据。

注意:队列长度必须为1。当队列满时,这些函数会覆盖里面的数据。不会阻塞。

/* 覆盖队列* xQueue: 写哪个队列* pvItemToQueue: 数据地址* 返回值: pdTRUE表示成功, pdFALSE表示失败
*/
BaseType_t xQueueOverwrite(QueueHandle_t xQueue,const void * pvItemToQueue
);BaseType_t xQueueOverwriteFromISR(QueueHandle_t xQueue,const void * pvItemToQueue,BaseType_t *pxHigherPriorityTaskWoken
);

队列偷看

如果想让队列的数据供多方读取,即只读不取。可进行偷看。可使用xQueuePeek()或xQueuePeekFromISR(),这些函数会从队列中复制出数据,但是不移除数据。

如果队列中没有数据,那么使用这些函数时也会导致阻塞;一旦队列中有数据,使用这些函数都会成功。

/* 偷看队列* xQueue: 偷看队列* pvItemToQueue: 数据地址* xTicksToWait: 阻塞时间* 返回值: pdTRUE表示成功, pdFALSE表示失败
*/
BaseType_t xQueuePeek(QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait
);BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue,void *pvBuffer,
);

应用场景:队列的基本使用

http://www.hkea.cn/news/796176/

相关文章:

  • 微信手机网站制作怎么引流客源最好的方法
  • 宿州建设网站公司前端seo搜索引擎优化
  • 做王境泽表情的网站百度seo关键词优化排名
  • 怎么选择无锡网站建设虚拟主机搭建网站
  • 做原油期货关注什么网站搜索引擎优化是做什么
  • 微信小程序怎么制作游戏安卓优化清理大师
  • 胶南做网站初学者做电商怎么入手
  • 网站为什么要维护佛山网络营销推广
  • 国企网站建设报告怎么建造自己的网站
  • 免费做司考真题的网站余姚网站如何进行优化
  • 如何网站开发1688网站
  • 丽水专业网站建设价格青岛网站优化
  • 网站开发专业培训学校百度推广登录官网入口
  • 贵阳做网站公司网站热度查询
  • 做课件最好的素材网站考拉seo
  • 网站建设玖首选金手指seo网站优化收藏
  • 台州卓远做网站好不好广州seo教程
  • dz网站数据备份bt磁力猪
  • github 可以做网站吗360seo
  • 杭州 企业门户网站建设爱链
  • dj那个网站做的好长沙公司网络营销推广
  • 设计师培训招生视频黑帽seo联系方式
  • 做网上贸易哪个网站好西宁网站seo
  • 电子烟网站建设杯子软文营销300字
  • 广州企业网站制作怎么做营销推广
  • 网站建设服务器在香港郑州网站建设专业乐云seo
  • 河北建设工程交易信息网海口关键词优化报价
  • 全国网站建设公司有多少家微信朋友圈广告投放收费标准
  • 免费做网站公司黑帽seo排名技术
  • apk连接wordpress上海seo