生产者消费者问题:线程同步问题
生产者--->产品(带缓冲区)--->消费者
生产者生产产品放到缓冲区,消费者从缓冲区拿产品消费,当缓冲区中产品满了之后,生产者会挂起,只有当消费者消费了一个产品之后,缓冲区产生一个空位,生产者才会继续生产。
对于缓冲区的访问是互斥的,缓冲区满了生产者要挂起,缓冲区空了消费者要挂起。
使用RT-Thread任务同步的相关机制给出一个生产者-消费者模型
/*
* 程序清单:信号量例程
*
* 该例程创建了一个动态信号量和静态信号量,分别展示了获取信号量超时和获取成功的情况
*
*/
#include <rtthread.h>
/* 信号量控制块 */
static struct rt_semaphore static_sem;
/* 指向信号量的指针 */
static rt_sem_t dynamic_sem = RT_NULL;
ALIGN(RT_ALIGN_SIZE)
static char thread1_stack[1024];
static struct rt_thread thread1;
static void rt_thread_entry1(void *parameter)
{
rt_err_t result;
rt_tick_t tick;
/