From a3240b9de1f01520c914d597a15550d39bf41104 Mon Sep 17 00:00:00 2001 From: xuezheng Date: Tue, 1 Mar 2022 09:18:53 +0000 Subject: [PATCH] update rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md. --- .../programming-manual/ipc1/ipc1.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md index a761acf..f761e93 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md @@ -343,8 +343,8 @@ t2 take a dynamic semaphore. number = 10 #include #define THREAD_PRIORITY 6 -#define THREAD_STACK_SIZE 512 -#define THREAD_TIMESLICE 5 +#define THREAD_STACK_SIZE 0x1000 +#define THREAD_TIMESLICE 20 /* 定义最大 5 个元素能够被产生 */ #define MAXSEM 5 @@ -362,6 +362,8 @@ static rt_thread_t consumer_tid = RT_NULL; struct rt_semaphore sem_lock; struct rt_semaphore sem_empty, sem_full; +int exit_flag = 0; + /* 生产者线程入口 */ void producer_thread_entry(void *parameter) { @@ -420,13 +422,14 @@ void consumer_thread_entry(void *parameter) rt_kprintf("the consumer sum is: %d\n", sum); rt_kprintf("the consumer exit!\n"); + exit_flag = 1; } int producer_consumer(void) { set = 0; get = 0; - + exit_flag = 0; /* 初始化 3 个信号量 */ rt_sem_init(&sem_lock, "lock", 1, RT_IPC_FLAG_PRIO); rt_sem_init(&sem_empty, "empty", MAXSEM, RT_IPC_FLAG_PRIO); @@ -464,11 +467,19 @@ int producer_consumer(void) return -1; } + while(!exit_flag); + + /* 脱离信号量,以便重复调用该应用 */ + rt_sem_detach(&sem_lock); + rt_sem_detach(&sem_empty); + rt_sem_detach(&sem_full); + return 0; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(producer_consumer, producer_consumer sample); + ``` 该例程的仿真结果如下: -- Gitee