//rt_mq_init()静态创建mq结构体,rt_mq_create()动态创建mq结构体;demo里用的动态创建的; #ifdefRT_USING_MESSAGEQUEUE structrt_mq_message { structrt_mq_message*next; }; 1.2 rt_mq_create 消息队列初始化 分配rt_messagequeue结构体内存,初始化以及分配空闲链表消...
如果创建失败,返回RT NULL。 静态分配内存:rt_mq_init 🛠️ 静态分配内存是指消息队列的内存需要提前分配好。你可以使用rt_mq_init函数来初始化一个已经分配好的消息队列。这个函数的原型如下:rt err_t rt_mq_init(rt mq_t mg, const char* name, void *msgpool, rt size_t msg_size, rt size_t ...
另外一种 C 表达方式 rt_mq_t,表示的是消息队列的句柄,在 C 语言中的实现是消息队列控制块的指针。消息队列控制块结构的详细定义请见以下代码: structrt_messagequeue{structrt_ipc_objectparent;void*msg_pool;/* 指向存放消息的缓冲区的指针 */rt_uint16_tmsg_size;/* 每个消息的长度 */rt_uint16_tmax_...
//rt_mq_init()静态创建mq结构体,rt_mq_create()动态创建mq结构体;demo里用的动态创建的; #ifdefRT_USING_MESSAGEQUEUE structrt_mq_message { structrt_mq_message*next; }; 1.2 rt_mq_create 消息队列初始化 分配rt_messagequeue结构体内存,初始化以及分配空闲链表消...
rt_err_trt_mq_delete(rt_mq_tmq) 初始化和脱离消息队列 初始化静态消息队列对象跟创建消息队列对象类似,只是静态消息队列对象的内存是在系统编译时由编译器分配的,一般放于读数据段或未初始化数据段中。 rt_err_trt_mq_init(rt_mq_tmq,constchar*name,void*msgpool,rt_size_tmsg_size,rt_size_tpool_size...
登录后复制rt_sem_create rt_sem_delete rt_mutex_create rt_mutex_trytake rt_mutex_delete rt_event_create rt_event_delete rt_mb_create rt_mb_delete rt_mq_create rt_mq_delete 完成量 登录后复制rt_completion_wait 队列类 登录后复制rt_wqueue_wait ...
rt_sem_create rt_sem_delete rt_mutex_create rt_mutex_trytake rt_mutex_delete rt_event_create rt_event_delete rt_mb_create rt_mb_delete rt_mq_create rt_mq_delete 完成量 rt_completion_wait 队列类 rt_wqueue_wait rt_data_queue_push ...
rt_mq_t rt_mq_create(const char *name, rt_size_t msg_size, rt_size_t max_msgs, rt_uint8_t flag) 1. 2. 3. 4. 参数name为消息队列名称;msg_size为队列中一条消息的长度,单位为字节;max_msgs为消息队列的最大个数;flag为消息队列的等待方式。
在上述示例中,rt_mq_create 函数用于动态创建一个消息队列,并返回消息队列对象的指针。而 rt_mq_init 函数则用于初始化一个静态分配的消息队列对象,并传入预先分配的消息池。 2.3消息队列的删除 rt_err_trt_mq_delete(rt_mq_tmq); 这个函数用于删除一个消息队列,并释放与之相关的资源。具体的参数和返回值如下...
rt_mq_create 中的msg_size 参数值传递相等的实参值。千万不要随意改变 size 参数的数值。 换种说法,别用消息队列直接发变长数据。 Q8. INIT_xxx_EXPORT 宏详解 当初接触 rt-thread 第一个让我感触的地方就是,main 函数里没有初始化配置,上来直接就是一个单独的线程。而,其它线程都通过 INIT_APP_EXPORT 自...