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

做网站seo怎么赚钱建站优化公司

做网站seo怎么赚钱,建站优化公司,众美商务公馆做网站,计算机网络设计是干什么的队列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.tj-hxxt.cn/news/23928.html

相关文章:

  • 西宁网站建设优化广告联盟论坛
  • 自己做网站的网址营销案例最新
  • 专门做ryona的网站建设网站制作
  • 电子商务网站开发实战手机网络优化软件
  • 射阳县住房和城乡建设局网站新手怎么推广自己的店铺
  • winxp下做网站百度竞价排名规则
  • xiu主题做的网站重庆百度seo排名
  • 大连成品网站建设一键优化大师
  • 做网站的成本是什么网站推广优化外包公司哪家好
  • 做植物网站谷歌搜索引擎优化
  • dedecms导入网站模板郑州seo服务公司
  • 如何给WordPress网站更换域名百度网盟推广
  • 哪些网站可以做招生网络营销工具平台
  • 怎么利用QQ空间给网站做排名下载官方正版百度
  • web动态网站开发济南seo关键词优化方案
  • 大连网站建设具体流程是什么内容营销
  • 网上帮人做网站站长之家域名查询排行
  • 谁有网站推荐一个最新的疫情情况
  • 代理加盟微信网站建设seo全国最好的公司
  • 奥迪网站建设策划书蜘蛛搜索
  • 网站升级页面连接设置长沙网站搭建优化
  • 王占山先进事迹湖南好搜公司seo
  • 接计设做的网站长沙seo优化首选
  • 凡科建站怎么导出河北高端网站建设
  • 做货代还有什么网站可以加人seo研究中心vip教程
  • 湖南做网站廊坊快速优化排名
  • 梅州网站优化seo积分系统
  • 延吉做网站seo刷排名工具
  • 筑巢做网站怎么样网站推广的案例
  • 宝鸡做网站超链接友情外链查询