生产者线程与消费者线程使用信号量同步
更多...
生产者线程与消费者线程使用信号量同步
源码
#include <rtthread.h>
#define THREAD_PRIORITY 6
#define THREAD_STACK_SIZE 512
#define THREAD_TIMESLICE 5
#define MAXSEM 5
void producer_thread_entry(void *parameter)
{
int cnt = 0;
while (cnt < 10)
{
array[set % MAXSEM] = cnt + 1;
rt_kprintf(
"the producer generates a number: %d\n", array[
set % MAXSEM]);
set++;
cnt++;
}
}
void consumer_thread_entry(void *parameter)
{
while (1)
{
sum += array[get % MAXSEM];
rt_kprintf(
"the consumer[%d] get a number: %d\n", (
get % MAXSEM), array[
get % MAXSEM]);
get++;
if (get == 10) break;
}
}
int producer_consumer(void)
{
set = 0;
get = 0;
THREAD_STACK_SIZE,
THREAD_PRIORITY - 1, THREAD_TIMESLICE);
THREAD_STACK_SIZE,
THREAD_PRIORITY + 1, THREAD_TIMESLICE);
return 0;
}