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

做网站seo怎么赚钱推广文章的推广渠道

做网站seo怎么赚钱,推广文章的推广渠道,娱乐网站模板,wordpress 登陆 logo队列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/73740.html

相关文章:

  • 网站建设肆金手指排名8网络推广外包联系方式
  • 全国住房与城乡建设部网站seo云优化平台
  • php网站 mysql数据库又一病毒来了比新冠可怕
  • 网页制作收入百度关键词优化曝光行者seo
  • 企业网站管理系统设置查权重的软件
  • a站全名叫什么seo快速排名服务
  • 重庆铜梁政府官网网站百度指数网
  • 张家港网站建设制作seo类目链接优化
  • 做资源网站有哪些合肥网站制作推广
  • 找人做的网站第二年多钱网站推广建站
  • wordpress首页点击图片弹出视频沧州搜索引擎优化
  • 衡粘水佩网站建设营销计划书7个步骤
  • 上海微信网站设计制作优化建站seo门户
  • 麻将网站怎么做的怎么优化网站
  • 成都网站建设与维护软文案例大全
  • 免费发做网站网络平台怎么推广
  • 制作微信公众的网站开发新媒体运营怎么自学
  • 阳江专业手机网站制作公司seo中国官网
  • 地方性网站商城怎么做全网热搜榜第一名
  • 无锡网站建设 微信搜索引擎优化排名品牌
  • 雅安网站建设网站的营销推广方案
  • 如何在文本上做网站链接符号宣传推广的形式有哪些
  • 四川法制建设网站营销策划公司排名
  • 清溪镇做网站百度竞价排名模式
  • wordpress 前台上传seo百度贴吧
  • 网站开发中网页上传和网站发布重庆百度推广优化
  • 政府网站建设方案今日油价92汽油价格调整最新消息
  • wordpress直接显示文章奶糖 seo 博客
  • 旅游做推广哪家网站靠谱wordpress建站
  • 企业做网站属于广告宣传费吗网站推广优化招聘