rt_err_trt_mq_detach(rt_mq_tmq); 使用该函数接口后,内核先唤醒所有挂在该消息等待队列对象上的线程(线程返回值是 -RT_ERROR),然后将该消息队列对象从内核对象管理器中脱离。下表描述了该函数的输入参数与返回值: rt_mq_detach() 的输入参数和返回值 2.3.3 发送消息 线程或者中断服务程序都可以给消息队列...
{/*从消息队列中接收消息*/if(rt_mq_recv(&mq, &buf,sizeof(buf), RT_WAITING_FOREVER) ==RT_EOK) { rt_kprintf("thread1: recv msg from msg queue, the content:%c\n", buf);if(cnt ==19) {break; } }/*延时 50ms*/cnt++; rt_thread_mdelay(50); } rt_kprintf("thread1: detach m...
{/*从消息队列中接收消息*/if(rt_mq_recv(&mq, &buf,sizeof(buf), RT_WAITING_FOREVER) ==RT_EOK) { rt_kprintf("thread1: recv msg from msg queue, the content:%c\n", buf);if(cnt ==19) {break; } }/*延时 50ms*/cnt++; rt_thread_mdelay(50); } rt_kprintf("thread1: detach m...
删除rt_mq_init()初始化的消息队列,可以用如下函数: rt_err_t rt_mq_detach(rt_mq_t mq) 调用此函数时,首先会唤醒所有挂起在该消息队列中,线程等待队列上的线程,然后将该消息队列从内核对象管理器中脱离。 3.发送紧急消息 RT-Thread 中,提供了一种发送紧急消息的函数接口,其过程与发送消息几乎一样。其函数...
删除它:rt_mq_delete(),只能删除使用 rt_mq_create()创建的队列 脱离它:rt_mq_detach(),只能脱离使用 rt_mq_init()初始化的队列 删除消息队列时,如果有线程在等待该队列,则内核会先唤醒这些线程(线程返回值 是RT_ERROR),然后再释放消息队列使用的内存,最后删除消息队列对象。
rt_err_t rt_mq_detach(rt_mq_t mq) 2.2.3 发送消息 和邮件一样,在 RT-Thread 中发送邮件分为 有无等待方式发送,以及紧急消息发送。 无等待方式适用于所有的线程和中断,等待方式不能用于中断中! 无等待发送消息: /** 看函数原型,其实就是把等待方式发送的时间改成了0 ...
rt_err_trt_mq_detach(rt_mq_tmq); 这个函数用于分离一个消息队列,即不再使用它,但不释放相关资源。具体的参数和返回值如下: 参数: mq:要分离的消息队列对象的指针。 返回值: 如果成功分离了消息队列,则返回 RT_EOK。 如果分离失败,则返回一个错误码,表示分离失败的原因。
消息队列控制块是 RT-Thread 系统管理消息队列的一种数据结构,由结构体struct rt_messagequeue表示。另外rt_mq_t表示消息队列的句柄,即指向消息队列控制块的指针。 消息队列控制块的数据结构定义如下: struct rt_messagequeue { struct rt_ipc_object parent; /* 继承自 ipc_object 类 */ ...
rt_mq_detach() 的输入参数和返回值 发送消息 线程或者中断服务程序都可以给消息队列发送消息。当发送消息时,消息队列对象先从空闲消息链表上取下一个空闲消息块,把线程或者中断服务程序发送的消息内容复制到消息块上,然后把该消息块挂到消息队列的尾部。当且仅当空闲消息链表上有可用的空闲消息块时,发送者才能成功...
删除rt_mq_init()初始化的消息队列,可以用如下函数: AI检测代码解析 rt_err_t rt_mq_detach(rt_mq_t mq) 1. 调用此函数时,首先会唤醒所有挂起在该消息队列中,线程等待队列上的线程,然后将该消息队列从内核对象管理器中脱离。 3.发送紧急消息