邮箱是操作系统中,一个进程给另一个进程发送消息的方式。在裸奔的单片机中,在两个函数中交换信息的时候,我们通常选择最简便的方式-全局变量,这种编程模式无疑是降低了安全性和可靠性。再且,邮箱还能起到挂起线程的作用。
本实验中创建一个邮箱,两个线程,线程2以一定周期发送邮箱,线程1以一定周期从邮箱中取出邮件。当线程2中发送20封邮件之后,发送一封特殊的邮件通知其他线程,自己已经运行结束。线程1取出邮件后,检查邮件是否是特殊邮件,如果是,则线程1也退出。
程序:
#include <rtthread.h>
void rt_init_thread_entry(void *parameter)
{
}
static struct rt_mailbox mb;
static rt_uint8_t mb_pool[128];
static rt_uint8_t mb_str1[] = "I'm a mail!";
static rt_uint8_t mb_str2[] = "This is another mail!";
static rt_uint8_t mb_str3[] = "Over!";
static rt_uint8_t thread1_stack[1024];
struct rt_thread thread1;
static void thread1_entry(void *parameter)
{
char *str;
while (1)
{
rt_kprintf("thread1: try to receive a mail.\n");
/* receive a mail from the mailbox. */