Setup structure for programs

This commit is contained in:
TriantaTV 2022-10-11 20:18:38 -05:00
parent 71b700d11e
commit 160dc9a99e
5 changed files with 48 additions and 1 deletions

View File

@ -2,5 +2,7 @@
#define CONSUMER_H #define CONSUMER_H
void Consumer(void); void Consumer(void);
void consume_item(int item);
long int remove_item(void);
#endif #endif

View File

@ -2,5 +2,7 @@
#define PRODUCER_H #define PRODUCER_H
void Producer(void); void Producer(void);
long int produce_item(void);
void insert_item(int item);
#endif #endif

View File

@ -1,6 +1,25 @@
#include "consumer.h" #include "consumer.h"
void Consumer(void) void Consumer(void)
{
int item;
while (1)
{
down(&full);
down(&mutex);
item = remove_item();
up(&mutex);
up(&empty);
consume_item(item);
}
}
void consume_item(item)
{
;
}
long int remove_item()
{ {
; ;
} }

View File

@ -1,6 +1,11 @@
#include <stdio.h> #include <stdio.h>
#include <semaphore.h>
#include <unistd.h> #include <unistd.h>
semaphore mutex = 1;
semaphore empty;
semaphore full = 0;
int GetSplitAmount(char* argv); int GetSplitAmount(char* argv);
int main(int argc, char* argv[]) int main(int argc, char* argv[])
@ -8,7 +13,6 @@ int main(int argc, char* argv[])
int splitLimit = 1; int splitLimit = 1;
if (argc == 2) if (argc == 2)
splitLimit = GetSplitAmount(argv[1]); splitLimit = GetSplitAmount(argv[1]);
} }
int GetSplitAmount(char* argv) int GetSplitAmount(char* argv)

View File

@ -1,6 +1,26 @@
#include <stdlib.h>
#include "producer.h" #include "producer.h"
void Producer(void) void Producer(void)
{
int item;
while (1)
{
item = produce_item();
down(&empty);
down(&mutex);
insert_item(item);
up(&mutex);
up(&full);
}
}
long int produce_item(void)
{
return random();
}
void insert_item(int item)
{ {
; ;
} }