rt_err_trt_mq_urgent(rt_mq_tmq,void* buffer,rt_size_tsize); 2.3、接收消息 接收一个消息后消息队列上的队首消息被转移到了空闲消息链表的尾部。 rt_err_trt_mq_recv (rt_mq_tmq,void* buffer, rt_size_tsize,rt_int32_ttimeout); 3、官方例程 就是一个线程
rt_mq_urgent() 的输入参数和返回值2.3.6 接收消息 当消息队列中有消息时,接收者才能接收消息,否则接收者会根据超时时间设置,或挂起在消息队列的等待线程队列上,或直接返回。接收消息函数接口如下: rt_err_t rt_mq_recv (rt_mq_t mq, void* buffer, rt_size_t size, rt_int32_t timeout); 接收消...
1rt_err_t rt_mq_urgent(rt_mq_t mq, void* buffer, rt_size_t size); (1)入口参数: mq:消息队列对象的句柄。buffer:消息内容。size:消息大小。 (2)返回值: RT_EOK:成功。RT_EFULL:消息队列已满。RT_ERROR:失败。 7、接收消息函数:当消息队列中有消息时,接收者才能接收消息,否则接收者会根据超时...
使用rt_mq_send()发送消息时,队列中有空闲消息块时,才能成功发送消息,否则返回错误码(-RT_EFULL)。 使用rt_mq_send_wait()发送消息时,如果队列中没有可用的空闲消息块,会根据 timeout 参数等待,超时后才返回错误。 使用rt_mq_urgent()发送消息时,也要先得到空闲消息块,它会把消息块放在消息队列的头部,以便...
消息队列发送消息队列发送有两个API,一个是基于FIFO模型的rt_mq_send,一个是基于LIFO模型的rt_mq_urgent。先来看rt_mq_send: /** *This function will send a message to message queue object, if there are *threads suspended on message queue object, it will be waked up. * *@param mq the messa...
* @return the error code*/rt_err_t rt_mq_urgent(rt_mq_t mq,void*buffer, rt_size_t size) 当消息队列中有消息时,接收者才能接收消息,否则接收者会根据超时时间设置,或挂起在消息队列的等待线程队列上,或直接返回; /** * This function will receive a message from message queue object, if there...
消息队列控制块是 RT-Thread 系统管理消息队列的一种数据结构,由结构体struct rt_messagequeue表示。另外rt_mq_t表示消息队列的句柄,即指向消息队列控制块的指针。 消息队列控制块的数据结构定义如下: struct rt_messagequeue { struct rt_ipc_object parent; /* 继承自 ipc_object 类 */ ...
其函数接口如下: rt_err_t rt_mq_urgent(rt_mq_t mq, void* buffer, rt_size_t size); 在发送紧急消息时,从空闲消息链表上取下来的消息块不是挂到消息队列的队尾,而是挂到队首,这样,接收者就能够优先接收到紧急消息,从而及时进行消息处理。
1rt_err_t rt_mq_delete(rt_mq_t mq); 1. (1)入口参数: mq:消息队列对象的句柄。 (2)返回值: RT_EOK:成功。 3、创建静态消息队列函数:创建静态消息队列和《RT-Thread编程指南》所讲的初始化静态消息队列是一样的,静态消息队列对象的内存是在系统编译时由编译器分配的,一般放于读数据段或未初始化数据...
rt_mq_urgent rt_mq_recv 几个api 有 size 参数,但是请严格按照 rt_mq_init rt_mq_create 中的msg_size 参数值传递相等的实参值。千万不要随意改变 size 参数的数值。 换种说法,别用消息队列直接发变长数据。 Q8. INIT_xxx_EXPORT 宏详解 当初接触 rt-thread 第一个让我感触的地方就是,main 函数里没...