rt_err_t rt_mb_init(rt_mailbox_t mb, const char* name, void* msgpool, rt_size_t size, rt_uint8_t flag) 参数mb为邮箱控制块的指针;name为邮箱名称;msgpool为邮箱缓冲区指针;size为邮箱容量;flag为邮箱标志,与rt_mb_create()相同。 这里的size参数指定的是邮箱的容量,即如果msgpool指向的缓冲区...
rt_err_t rt_mb_init(rt_mailbox_t mb,const char* name,void* msgpool,rt_size_t size,rt_uint8_t flag) 参数mb为邮箱控制块的指针;name为邮箱名称;msgpool为邮箱缓冲区指针;size为邮箱容量;flag为邮箱标志,与rt_mb_create()相同。 这里的size参数指定的是邮箱的容量,即如果msgpool指向的缓冲区的字节...
(1)线程挂起 当线程调用rt_thread_delay() 时,线程将主动挂起;当调用rt_sem_take(),rt_mb_recv() 等函数时,资源不可使用也将导致线程挂起。 处于挂起状态的线程,如果其等待的资源超时(超过其设定的等待时间),那么该线程将不再等待这些资源,并返回到就绪状态;或者,当其他线程释放掉该线程所等待的资源时,该线...
}/*发送邮件告诉线程 1,线程 2 已经运行结束*/rt_mb_send(&mb, (rt_uint32_t)&mb_str3); }intmailbox_sample(void) { rt_err_t result;/*初始化一个 mailbox*/result= rt_mb_init(&mb,"mbt",/*名称是 mbt*/&mb_pool[0],/*邮箱用到的内存池是 mb_pool*/sizeof(mb_pool) /4,/*邮箱...
* @return the operation status, RT_EOK on successful*/rt_err_t rt_mb_init(rt_mailbox_t mb,constchar*name,void*msgpool, rt_size_t size, rt_uint8_t flag) 脱离邮箱将把静态初始化的邮箱对象从内核对象管理器中脱离; 使用该函数接口后,内核先唤醒所有挂在该邮箱上的线程(线程获得返回值是 - ...
rt_err_t rt_mb_init(rt_mailbox_t mb, const char *name, void *msgpool, rt_size_t size, rt_uint8_t flag) 脱离邮箱: /** 参数的含义: mb 邮箱对象的句柄 返回 RT_EOK 成功 */ rt_err_t rt_mb_detach(rt_mailbox_t mb) 1.2.3 发送邮件 ...
rt_mp_init和rt_mp_create的区别为,rt_mp_init用来初始化所需的内存块已经提前分配好的内存池,rt_mp_create则需要调用rt_malloc来分配内存池所需内存,所以使用rt_mp_create一定要其他内存分配方法配合才能进行。 rt_mp_create功能: 1.初始化object基类。 2.按照传入的参数初始化各种成员如: start_address,size...
函数rt_mb_init()的返回值为RT_EOK。 创建邮箱的标志变量取值有两种: RT_IPC_FLAG_FIFO,等待邮箱的线程按照先进先出的方式进行排列。 RT_IPC_FLAG_PRIO,等待邮箱的线程按照优先级的方式进行排列。 2. 发送邮件 RT-Thread 提供的发送邮件接口函数有两种:一种是无等待超时接口,一种是有等待超时。
其中init_priority 是线程创建时指定的线程优先级,在线程运行过程当中是不会被改变的(除非用户 执行线程控制函数进行手动调整线程优先级)。 cleanup 会在线程退出时,被空闲线程回调一次以执行用户设置的清理现场等工作。 最后的一个成员user_data 可由用户挂接一些数据信息到线程控制块中,以提供类似线程私有数据的实现...
1rt_err_t rt_mb_init(rt_mailbox_t mb, 2 const char *name, 3 void *msgpool, 4 rt_size_t size, 5 rt_uint8_t flag); 1. 2. 3. 4. 5. (1)入口参数: mb:邮箱对象的句柄。 name:邮箱名称。 msgpool:缓冲区指针。 size:邮箱容量。