From 39d628cad25e08348cf5d636df84824942c21b44 Mon Sep 17 00:00:00 2001 From: Isaac Shoebottom Date: Sun, 8 Oct 2023 23:19:49 -0300 Subject: [PATCH] Add A3, almost done --- Assignment3/.idea/.gitignore | 8 + Assignment3/.idea/Assignment3.iml | 2 + Assignment3/.idea/misc.xml | 4 + Assignment3/.idea/modules.xml | 8 + Assignment3/.idea/vcs.xml | 6 + Assignment3/CMakeLists.txt | 6 + Assignment3/documentation/Assignment 3.pdf | Bin 0 -> 110364 bytes Assignment3/documentation/sample_code.txt | 35 ++++ .../documentation/sample_execution.txt | 62 +++++++ .../documentation/sample_execution_2.txt | 100 ++++++++++++ Assignment3/examples/1-no_join-fixed.c | 17 ++ Assignment3/examples/2-sleep no_join-fixed.c | 23 +++ .../3-losing_track_of_threads-fixed.c | 24 +++ Assignment3/examples/4-passing_data_wrongly.c | 21 +++ .../examples/4-passing_data_wrongly_fixed.c | 31 ++++ Assignment3/examples/5-pthread_detach.c | 19 +++ Assignment3/main.c | 151 ++++++++++++++++++ Assignment3/outputs/3 2 1.txt | 63 ++++++++ 18 files changed, 580 insertions(+) create mode 100644 Assignment3/.idea/.gitignore create mode 100644 Assignment3/.idea/Assignment3.iml create mode 100644 Assignment3/.idea/misc.xml create mode 100644 Assignment3/.idea/modules.xml create mode 100644 Assignment3/.idea/vcs.xml create mode 100644 Assignment3/CMakeLists.txt create mode 100644 Assignment3/documentation/Assignment 3.pdf create mode 100644 Assignment3/documentation/sample_code.txt create mode 100644 Assignment3/documentation/sample_execution.txt create mode 100644 Assignment3/documentation/sample_execution_2.txt create mode 100644 Assignment3/examples/1-no_join-fixed.c create mode 100644 Assignment3/examples/2-sleep no_join-fixed.c create mode 100644 Assignment3/examples/3-losing_track_of_threads-fixed.c create mode 100644 Assignment3/examples/4-passing_data_wrongly.c create mode 100644 Assignment3/examples/4-passing_data_wrongly_fixed.c create mode 100644 Assignment3/examples/5-pthread_detach.c create mode 100644 Assignment3/main.c create mode 100644 Assignment3/outputs/3 2 1.txt diff --git a/Assignment3/.idea/.gitignore b/Assignment3/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/Assignment3/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Assignment3/.idea/Assignment3.iml b/Assignment3/.idea/Assignment3.iml new file mode 100644 index 0000000..6d70257 --- /dev/null +++ b/Assignment3/.idea/Assignment3.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Assignment3/.idea/misc.xml b/Assignment3/.idea/misc.xml new file mode 100644 index 0000000..f1c67df --- /dev/null +++ b/Assignment3/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Assignment3/.idea/modules.xml b/Assignment3/.idea/modules.xml new file mode 100644 index 0000000..87fee1b --- /dev/null +++ b/Assignment3/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Assignment3/.idea/vcs.xml b/Assignment3/.idea/vcs.xml new file mode 100644 index 0000000..2e3f692 --- /dev/null +++ b/Assignment3/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assignment3/CMakeLists.txt b/Assignment3/CMakeLists.txt new file mode 100644 index 0000000..e769cd2 --- /dev/null +++ b/Assignment3/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.20) +project(Assignment3 C) + +set(CMAKE_C_STANDARD 99) + +add_executable(Assignment3 main.c) diff --git a/Assignment3/documentation/Assignment 3.pdf b/Assignment3/documentation/Assignment 3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a22c7c8e16c3804237ef1a66ef80178faebc772c GIT binary patch literal 110364 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 z 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 Xg>ys0C+8~!m>m<-vaoPk@2vG3j}%=T literal 0 HcmV?d00001 diff --git a/Assignment3/documentation/sample_code.txt b/Assignment3/documentation/sample_code.txt new file mode 100644 index 0000000..994c5cd --- /dev/null +++ b/Assignment3/documentation/sample_code.txt @@ -0,0 +1,35 @@ +#include // for pthread_create(), pthread_join(), etc. +#include // for scanf(), printf(), etc. +#include // for malloc() +#include // for sleep() + +#define NUMBER_OF_BOXES_PER_DWELLER 5 +#define ROOM_IN_TRUCK 10 +#define MIN_BOX_WEIGHT 5 +#define MAX_BOX_WEIGHT 50 +#define MAX_TIME_FOR_HOUSE_DWELLER 7 +#define MIN_TIME_FOR_HOUSE_DWELLER 1 +#define MAX_TIME_FOR_MOVER 3 +#define MIN_TIME_FOR_MOVER 1 +#define MIN_TIME_FOR_TRUCKER 1 +#define MAX_TIME_FOR_TRUCKER 3 +#define MIN_TRIP_TIME 5 +#define MAX_TRIP_TIME 10 +#define RANDOM_WITHIN_RANGE(a,b,seed) (a+rand_r(&seed)%(b-a)) +// For pipes +#define READ_END 0 +#define WRITE_END 1 + +// Pipe between house dwellers and movers +int houseFloor[2]; +// Pipe between movers and truckers +int nextToTrucks[2]; + +// some function definitions follow + +int main(int argc, char** argv){ + srand(time(NULL)); + +// rest of the program follows + return 0; +} \ No newline at end of file diff --git a/Assignment3/documentation/sample_execution.txt b/Assignment3/documentation/sample_execution.txt new file mode 100644 index 0000000..9120924 --- /dev/null +++ b/Assignment3/documentation/sample_execution.txt @@ -0,0 +1,62 @@ +Please input number of people living in the house, number of movers and number of truck drivers +3 2 1 +Hello from house dweller 0 +Hello from house dweller 1 +Hello from house dweller 2 +Hello from mover 1 +Hello from mover 0 +Hello from truck driver 0 +House dweller 1 created a box that weighs 17 in 5 units of time +House dweller 0 created a box that weighs 19 in 6 units of time +House dweller 2 created a box that weighs 13 in 6 units of time +House dweller 1 created a box that weighs 30 in 1 units of time +Mover 0 brought down a box that weighs 17 in 1 units of time +Mover 0 brought down a box that weighs 13 in 1 units of time +Mover 1 brought down a box that weighs 19 in 2 units of time +Trucker 0 loaded up a box that weighs 17 to the truck, took 2 units of time, room left:9 +Mover 0 brought down a box that weighs 30 in 1 units of time +Trucker 0 loaded up a box that weighs 13 to the truck, took 1 units of time, room left:8 +House dweller 1 created a box that weighs 6 in 4 units of time +House dweller 0 created a box that weighs 20 in 4 units of time +Trucker 0 loaded up a box that weighs 19 to the truck, took 2 units of time, room left:7 +House dweller 2 created a box that weighs 44 in 6 units of time +Mover 0 brought down a box that weighs 20 in 2 units of time +House dweller 0 created a box that weighs 17 in 2 units of time +Mover 1 brought down a box that weighs 6 in 2 units of time +House dweller 1 created a box that weighs 26 in 2 units of time +Mover 0 brought down a box that weighs 44 in 1 units of time +Trucker 0 loaded up a box that weighs 30 to the truck, took 2 units of time, room left:6 +Mover 1 brought down a box that weighs 26 in 2 units of time +Trucker 0 loaded up a box that weighs 20 to the truck, took 1 units of time, room left:5 +Mover 0 brought down a box that weighs 17 in 2 units of time +Trucker 0 loaded up a box that weighs 6 to the truck, took 1 units of time, room left:4 +House dweller 0 created a box that weighs 25 in 4 units of time +Trucker 0 loaded up a box that weighs 44 to the truck, took 1 units of time, room left:3 +House dweller 1 created a box that weighs 40 in 5 units of time +House dweller 1 is done packing +Trucker 0 loaded up a box that weighs 26 to the truck, took 1 units of time, room left:2 +House dweller 2 created a box that weighs 49 in 6 units of time +Mover 0 brought down a box that weighs 25 in 2 units of time +Mover 1 brought down a box that weighs 40 in 2 units of time +Trucker 0 loaded up a box that weighs 17 to the truck, took 2 units of time, room left:1 +Mover 0 brought down a box that weighs 49 in 2 units of time +Trucker 0 loaded up a box that weighs 25 to the truck, took 1 units of time, room left:0 +Full truck 0 with load of 217 units of mass departed, round-trip will take 6 +House dweller 0 created a box that weighs 14 in 6 units of time +House dweller 0 is done packing +House dweller 2 created a box that weighs 35 in 6 units of time +Mover 0 brought down a box that weighs 14 in 2 units of time +Mover 1 brought down a box that weighs 35 in 1 units of time +Trucker 0 loaded up a box that weighs 40 to the truck, took 2 units of time, room left:9 +Trucker 0 loaded up a box that weighs 49 to the truck, took 1 units of time, room left:8 +House dweller 2 created a box that weighs 11 in 6 units of time +House dweller 2 is done packing +Mover 0 is done moving boxes downstairs +Trucker 0 loaded up a box that weighs 14 to the truck, took 2 units of time, room left:7 +Mover 1 brought down a box that weighs 11 in 2 units of time +Mover 1 is done moving boxes downstairs +Trucker 0 loaded up a box that weighs 35 to the truck, took 2 units of time, room left:6 +Trucker 0 loaded up a box that weighs 11 to the truck, took 2 units of time, room left:5 +Not full truck with load of 149 units of mass departed, one way trip will take 5 +Trucker 0 is finished +Moving is finished! \ No newline at end of file diff --git a/Assignment3/documentation/sample_execution_2.txt b/Assignment3/documentation/sample_execution_2.txt new file mode 100644 index 0000000..e2ad786 --- /dev/null +++ b/Assignment3/documentation/sample_execution_2.txt @@ -0,0 +1,100 @@ +Please input number of people living in the house, number of movers and number of truck drivers +5 2 2 +Hello from house dweller 0 +Hello from house dweller 1 +Hello from house dweller 2 +Hello from house dweller 3 +Hello from mover 1 +Hello from house dweller 4 +Hello from truck driver 0 +Hello from mover 0 +Hello from truck driver 1 +House dweller 0 created a box that weighs 11 in 1 units of time +House dweller 4 created a box that weighs 37 in 1 units of time +Mover 1 brought down a box that weighs 37 in 1 units of time +Mover 0 brought down a box that weighs 11 in 1 units of time +House dweller 3 created a box that weighs 40 in 3 units of time +Trucker 0 loaded up a box that weighs 37 to the truck, took 1 units of time, room left:9 +House dweller 2 created a box that weighs 49 in 4 units of time +House dweller 4 created a box that weighs 22 in 3 units of time +House dweller 3 created a box that weighs 24 in 1 units of time +Trucker 1 loaded up a box that weighs 11 to the truck, took 2 units of time, room left:9 +House dweller 0 created a box that weighs 24 in 4 units of time +Mover 0 brought down a box that weighs 40 in 2 units of time +House dweller 1 created a box that weighs 38 in 6 units of time +Mover 1 brought down a box that weighs 49 in 2 units of time +House dweller 4 created a box that weighs 44 in 2 units of time +Trucker 1 loaded up a box that weighs 40 to the truck, took 2 units of time, room left:8 +House dweller 3 created a box that weighs 33 in 3 units of time +Mover 0 brought down a box that weighs 22 in 2 units of time +Trucker 0 loaded up a box that weighs 49 to the truck, took 2 units of time, room left:8 +Mover 1 brought down a box that weighs 24 in 2 units of time +House dweller 2 created a box that weighs 6 in 4 units of time +House dweller 4 created a box that weighs 19 in 2 units of time +Mover 0 brought down a box that weighs 24 in 1 units of time +Trucker 0 loaded up a box that weighs 24 to the truck, took 1 units of time, room left:7 +House dweller 0 created a box that weighs 19 in 4 units of time +Trucker 1 loaded up a box that weighs 22 to the truck, took 2 units of time, room left:7 +Mover 0 brought down a box that weighs 44 in 1 units of time +House dweller 4 created a box that weighs 38 in 2 units of time +House dweller 4 is done packing +Mover 1 brought down a box that weighs 38 in 2 units of time +Trucker 0 loaded up a box that weighs 24 to the truck, took 1 units of time, room left:6 +Mover 0 brought down a box that weighs 33 in 1 units of time +Mover 1 brought down a box that weighs 6 in 1 units of time +Trucker 1 loaded up a box that weighs 44 to the truck, took 2 units of time, room left:6 +House dweller 1 created a box that weighs 26 in 6 units of time +House dweller 2 created a box that weighs 29 in 4 units of time +House dweller 3 created a box that weighs 8 in 5 units of time +Trucker 0 loaded up a box that weighs 38 to the truck, took 2 units of time, room left:5 +Trucker 1 loaded up a box that weighs 33 to the truck, took 1 units of time, room left:5 +Mover 0 brought down a box that weighs 19 in 2 units of time +Trucker 0 loaded up a box that weighs 6 to the truck, took 1 units of time, room left:4 +House dweller 3 created a box that weighs 39 in 1 units of time +House dweller 3 is done packing +Mover 1 brought down a box that weighs 19 in 2 units of time +House dweller 0 created a box that weighs 44 in 5 units of time +Mover 1 brought down a box that weighs 26 in 1 units of time +Trucker 1 loaded up a box that weighs 19 to the truck, took 2 units of time, room left:4 +Mover 0 brought down a box that weighs 38 in 2 units of time +Trucker 0 loaded up a box that weighs 19 to the truck, took 2 units of time, room left:3 +Mover 1 brought down a box that weighs 29 in 1 units of time +Mover 0 brought down a box that weighs 8 in 1 units of time +House dweller 2 created a box that weighs 33 in 4 units of time +Trucker 1 loaded up a box that weighs 26 to the truck, took 2 units of time, room left:3 +Mover 1 brought down a box that weighs 39 in 1 units of time +Trucker 0 loaded up a box that weighs 38 to the truck, took 2 units of time, room left:2 +Mover 0 brought down a box that weighs 44 in 2 units of time +House dweller 1 created a box that weighs 17 in 6 units of time +Trucker 1 loaded up a box that weighs 29 to the truck, took 2 units of time, room left:2 +Mover 1 brought down a box that weighs 33 in 2 units of time +Trucker 0 loaded up a box that weighs 8 to the truck, took 1 units of time, room left:1 +House dweller 2 created a box that weighs 13 in 3 units of time +House dweller 2 is done packing +Trucker 1 loaded up a box that weighs 39 to the truck, took 1 units of time, room left:1 +Trucker 0 loaded up a box that weighs 44 to the truck, took 1 units of time, room left:0 +Full truck 0 with load of 287 units of mass departed, round-trip will take 8 +Mover 0 brought down a box that weighs 17 in 2 units of time +House dweller 0 created a box that weighs 42 in 6 units of time +House dweller 0 is done packing +Mover 1 brought down a box that weighs 13 in 1 units of time +Trucker 1 loaded up a box that weighs 33 to the truck, took 1 units of time, room left:0 +Full truck 1 with load of 296 units of mass departed, round-trip will take 8 +House dweller 1 created a box that weighs 39 in 4 units of time +Mover 0 brought down a box that weighs 42 in 2 units of time +Mover 1 brought down a box that weighs 39 in 2 units of time +House dweller 1 created a box that weighs 5 in 5 units of time +House dweller 1 is done packing +Mover 0 is done moving boxes downstairs +Mover 1 brought down a box that weighs 5 in 2 units of time +Mover 1 is done moving boxes downstairs +Trucker 0 loaded up a box that weighs 17 to the truck, took 2 units of time, room left:9 +Trucker 1 loaded up a box that weighs 13 to the truck, took 2 units of time, room left:9 +Trucker 0 loaded up a box that weighs 42 to the truck, took 1 units of time, room left:8 +Trucker 1 loaded up a box that weighs 39 to the truck, took 1 units of time, room left:8 +Not full truck with load of 52 units of mass departed, one way trip will take 9 +Trucker 0 loaded up a box that weighs 5 to the truck, took 1 units of time, room left:7 +Not full truck with load of 64 units of mass departed, one way trip will take 8 +Trucker 0 is finished +Trucker 1 is finished +Moving is finished! \ No newline at end of file diff --git a/Assignment3/examples/1-no_join-fixed.c b/Assignment3/examples/1-no_join-fixed.c new file mode 100644 index 0000000..d0e3efa --- /dev/null +++ b/Assignment3/examples/1-no_join-fixed.c @@ -0,0 +1,17 @@ +/**To compile, don't forget to add -lpthread. Might not work without that */ +#include +#include + +void* run (void* arg){ + printf("Hello from run\n"); + return NULL; +} + +int main(){ + pthread_t thread; // variable to store the reference to the thread + pthread_create(&thread, NULL, &run, NULL); + printf("In main"); // This section will be executed in parallel + pthread_join(thread,NULL); // necessary for waiting for the thread to finish + printf("In main 2"); + return 0; +} \ No newline at end of file diff --git a/Assignment3/examples/2-sleep no_join-fixed.c b/Assignment3/examples/2-sleep no_join-fixed.c new file mode 100644 index 0000000..4faecd4 --- /dev/null +++ b/Assignment3/examples/2-sleep no_join-fixed.c @@ -0,0 +1,23 @@ +#include +#include +#include +#include +#include +#include + +void* run (void* arg){ + printf("Hello from run\n"); + return NULL; +} + +int main(){ + pthread_t thread; + pthread_create(&thread, NULL, &run, NULL); + // While the sleep() function will appear to provide synchronization, + // it is incorrect, and if used for this purposes instead of join + // or synchronization mechanism - the grade for the assignment will be + // reduced + sleep(2); + printf("Back in main"); + return 0; +} diff --git a/Assignment3/examples/3-losing_track_of_threads-fixed.c b/Assignment3/examples/3-losing_track_of_threads-fixed.c new file mode 100644 index 0000000..4703f9d --- /dev/null +++ b/Assignment3/examples/3-losing_track_of_threads-fixed.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include +#include + +void* run (void* arg){ + sleep(10-(int)arg); + printf("Hello from run\n"); +} + +int main(){ + pthread_t thread[10]; + int i = 0; + for (i = 0 ; i < 10; ++i) + pthread_create(&thread[i], NULL, &run,(void*)i); + + // If you plan to use the results of all the threads, consider + // using join for all of the threads + for (i = 0 ; i < 10; ++i) + pthread_join(thread[i],NULL); + printf("In main"); +} \ No newline at end of file diff --git a/Assignment3/examples/4-passing_data_wrongly.c b/Assignment3/examples/4-passing_data_wrongly.c new file mode 100644 index 0000000..8f7cfc1 --- /dev/null +++ b/Assignment3/examples/4-passing_data_wrongly.c @@ -0,0 +1,21 @@ +#include +#include + +void* run (void* arg){ + int i = (int) arg; + printf("Hello from run, arg is %i\n",i); +} + +int main(){ + pthread_t thread[10]; + int i = 0; + for (i = 0 ; i < 10; ++i) + pthread_create(&thread, NULL, &run,(void*)i); + // Notice how warnings are generated. This can be resolved by properly + // allocating space for the thread parameters. + // Note, that if you are using stack variable, the values might be corrupted + for (i = 0 ; i < 10; i++){ + pthread_join(thread[i],NULL); + } + printf("In main"); +} \ No newline at end of file diff --git a/Assignment3/examples/4-passing_data_wrongly_fixed.c b/Assignment3/examples/4-passing_data_wrongly_fixed.c new file mode 100644 index 0000000..1e6b470 --- /dev/null +++ b/Assignment3/examples/4-passing_data_wrongly_fixed.c @@ -0,0 +1,31 @@ +#include +#include +#include + +typedef struct thread_args{ + char letter; + int id; +}Args; +void* run (void* arg){ + Args* argg = (Args*) arg; + int i = argg->id; + printf("Hello from run %d\n", i); + return NULL; +} + +int main(int argc, char** argv){ + pthread_t thread[10]; + int i = 0; + for (i = 0 ; i < 10; i++){ + Args* argg = (Args*) (malloc(sizeof(Args))); + argg->letter = 'q'; + argg->id = i; + pthread_create(&(thread[i]), NULL, &run,(void*)argg); + } + for (i = 0 ; i < 10; i++){ + pthread_join(thread[i],NULL); + } + // Free the resources somewhere, for long running program. Or let the OS handle that + printf("In main"); + return 0; +} \ No newline at end of file diff --git a/Assignment3/examples/5-pthread_detach.c b/Assignment3/examples/5-pthread_detach.c new file mode 100644 index 0000000..1af07af --- /dev/null +++ b/Assignment3/examples/5-pthread_detach.c @@ -0,0 +1,19 @@ +#include +#include + +void* run (void* arg){ + printf("Hello from run\n"); + return NULL; +} + +int main(){ + pthread_t thread; + pthread_create(&thread, NULL, &run, NULL); + pthread_detach(thread); + // This command will make thread detached. This means the resources will be released + // upon the thread's completion - calling return + // However, detached threads cannot be joined, which means if you care about the result + // of the thread execution - you should not be using pthread_detach + printf("In main"); + return 0; +} \ No newline at end of file diff --git a/Assignment3/main.c b/Assignment3/main.c new file mode 100644 index 0000000..1d43251 --- /dev/null +++ b/Assignment3/main.c @@ -0,0 +1,151 @@ +#include // for pthread_create(), pthread_join(), etc. +#include // for scanf(), printf(), etc. +#include // for malloc() +#include // for sleep() + +#define NUMBER_OF_BOXES_PER_DWELLER 5 +#define ROOM_IN_TRUCK 10 +#define MIN_BOX_WEIGHT 5 +#define MAX_BOX_WEIGHT 50 +#define MAX_TIME_FOR_HOUSE_DWELLER 7 +#define MIN_TIME_FOR_HOUSE_DWELLER 1 +#define MAX_TIME_FOR_MOVER 3 +#define MIN_TIME_FOR_MOVER 1 +#define MIN_TIME_FOR_TRUCKER 1 +#define MAX_TIME_FOR_TRUCKER 3 +#define MIN_TRIP_TIME 5 +#define MAX_TRIP_TIME 10 +#define RANDOM_WITHIN_RANGE(a,b,seed) (a+rand_r(&seed)%(b-a)) +// For pipes +#define READ_END 0 +#define WRITE_END 1 + +// Pipe between house dwellers and movers +int houseFloor[2]; +// Pipe between movers and truckers +int nextToTrucks[2]; + +typedef struct args { + int id; + unsigned int seed; +} Args; + +void* dweller(void* arg) { + Args *args = (Args*) arg; + int id = args->id; + unsigned int seed = args->seed; + printf("Hello from house dweller %d\n", id); + + for(int i = 0; i < NUMBER_OF_BOXES_PER_DWELLER; i++) { + int weight = RANDOM_WITHIN_RANGE(MIN_BOX_WEIGHT, MAX_BOX_WEIGHT, seed); + int time = RANDOM_WITHIN_RANGE(MIN_TIME_FOR_HOUSE_DWELLER, MAX_TIME_FOR_HOUSE_DWELLER, seed); + sleep(time); + write(houseFloor[WRITE_END], &weight, sizeof(int)); + printf("House dweller %d produced a box that weights %d in %d units of time\n", id, weight, time); + } + printf("House dweller %d is done packing\n", id); + free(args); + return NULL; +} + +void* mover(void* arg) { + Args *args = (Args*) arg; + int id = args->id; + unsigned int seed = args->seed; + int weight; + + printf("Hello from mover %d\n", id); + while (read(houseFloor[READ_END], &weight, sizeof(int)) > 0) { + int time = RANDOM_WITHIN_RANGE(MIN_TIME_FOR_MOVER, MAX_TIME_FOR_MOVER, seed); + sleep(time); + printf("Mover %d brought down a box of weight %d in %d units of time\n", id, weight, time); + write(nextToTrucks[WRITE_END], &weight, sizeof(int)); + } + printf("Mover %d is done moving\n", id); + free(args); + return NULL; +} + +void* trucker(void* arg) { + Args *args = (Args*) arg; + int id = args->id; + unsigned int seed = args->seed; + int capacity = ROOM_IN_TRUCK; + int truckWeight = 0; + int weight; + + printf("Hello from trucker %d\n", id); + while (read(nextToTrucks[READ_END], &weight, sizeof(int)) > 0) { + capacity--; + truckWeight += weight; + int time = RANDOM_WITHIN_RANGE(MIN_TIME_FOR_TRUCKER, MAX_TIME_FOR_TRUCKER, seed); + sleep(time); + printf("Trucker %d loaded up box of weight %d in %d units of time, room left: %d\n", id, weight, time, capacity); + + if (capacity == 0) { + time = RANDOM_WITHIN_RANGE(MIN_TRIP_TIME, MAX_TRIP_TIME, seed); + printf("Full truck %d with load of %d units of mass departed. Round trip will take %d units of time\n", id, truckWeight, time); + sleep(time); + capacity = ROOM_IN_TRUCK; + truckWeight = 0; + } + } + printf("Truck %d is not full\n", id); + int time = RANDOM_WITHIN_RANGE(MIN_TRIP_TIME/2, MAX_TRIP_TIME/2, seed); // One way trip, so half the time + sleep(time); + printf("Not full truck %d with load of %d units of mass departed. One way will take %d units of time\n", id, truckWeight, time); + printf("Truck %d is finished\n", id); + free(args); + return NULL; +} + + +int main(int argc, char **argv) { + srand(time(NULL)); + + pipe(houseFloor); + pipe(nextToTrucks); + + int numberOfHouseDwellers, numberOfMovers, numberOfTruckers; + printf("Please input number of people living in the house, number of movers and number of truck drivers\n"); + scanf("%d %d %d", &numberOfHouseDwellers, &numberOfMovers, &numberOfTruckers); + + pthread_t dwellerThreads[numberOfHouseDwellers]; + pthread_t moverThreads[numberOfMovers]; + pthread_t truckerThreads[numberOfTruckers]; + + for(int i = 0; i < numberOfHouseDwellers; i++) { + Args *args = (Args*) malloc(sizeof(Args)); + args->id = i; + args->seed = rand(); + pthread_create(&dwellerThreads[i], NULL, &dweller, (void*) args); + } + for(int i = 0; i < numberOfMovers; i++) { + Args *args = (Args*) malloc(sizeof(Args)); + args->id = i; + args->seed = rand(); + pthread_create(&moverThreads[i], NULL, &mover, (void*) args); + } + for(int i = 0; i < numberOfTruckers; i++) { + Args *args = (Args*) malloc(sizeof(Args)); + args->id = i; + args->seed = rand(); + pthread_create(&truckerThreads[i], NULL, &trucker, (void*) args); + } + for (int i = 0; i < numberOfHouseDwellers; i++) { + pthread_join(dwellerThreads[i], NULL); + } + close(houseFloor[WRITE_END]); + for (int i = 0; i < numberOfMovers; i++) { + pthread_join(moverThreads[i], NULL); + } + close(houseFloor[READ_END]); + close(nextToTrucks[WRITE_END]); + for (int i = 0; i < numberOfTruckers; i++) { + pthread_join(truckerThreads[i], NULL); + } + close(nextToTrucks[READ_END]); + + printf("Moving is finished!\n"); + return 0; +} \ No newline at end of file diff --git a/Assignment3/outputs/3 2 1.txt b/Assignment3/outputs/3 2 1.txt new file mode 100644 index 0000000..6b6d561 --- /dev/null +++ b/Assignment3/outputs/3 2 1.txt @@ -0,0 +1,63 @@ +Please input number of people living in the house, number of movers and number of truck drivers +3 2 1 +Hello from house dweller 0 +Hello from house dweller 1 +Hello from house dweller 2 +Hello from mover 0 +Hello from mover 1 +Hello from trucker 0 +House dweller 0 produced a box that weights 22 in 1 units of time +House dweller 2 produced a box that weights 24 in 2 units of time +House dweller 0 produced a box that weights 42 in 1 units of time +Mover 0 picked up a box of weight 22 in 2 units of time +Mover 1 picked up a box of weight 24 in 1 units of time +House dweller 1 produced a box that weights 42 in 4 units of time +House dweller 2 produced a box that weights 47 in 2 units of time +Mover 0 picked up a box of weight 42 in 1 units of time +Trucker 0 loaded a box of weight 22 in 2 units of time, room left: 9 +Mover 0 picked up a box of weight 47 in 1 units of time +Mover 1 picked up a box of weight 42 in 2 units of time +House dweller 0 produced a box that weights 26 in 5 units of time +Trucker 0 loaded a box of weight 24 in 2 units of time, room left: 8 +Mover 0 picked up a box of weight 26 in 1 units of time +Trucker 0 loaded a box of weight 42 in 1 units of time, room left: 7 +House dweller 2 produced a box that weights 19 in 5 units of time +House dweller 0 produced a box that weights 45 in 2 units of time +House dweller 1 produced a box that weights 40 in 6 units of time +Mover 1 picked up a box of weight 19 in 1 units of time +Trucker 0 loaded a box of weight 47 in 2 units of time, room left: 6 +Mover 0 picked up a box of weight 45 in 2 units of time +Mover 1 picked up a box of weight 40 in 1 units of time +Trucker 0 loaded a box of weight 42 in 1 units of time, room left: 5 +House dweller 0 produced a box that weights 37 in 3 units of time +House dweller 0 is done packing +Mover 0 picked up a box of weight 37 in 1 units of time +Trucker 0 loaded a box of weight 26 in 2 units of time, room left: 4 +House dweller 1 produced a box that weights 31 in 4 units of time +Trucker 0 loaded a box of weight 19 in 1 units of time, room left: 3 +Mover 1 picked up a box of weight 31 in 1 units of time +House dweller 1 produced a box that weights 17 in 1 units of time +House dweller 2 produced a box that weights 27 in 6 units of time +Trucker 0 loaded a box of weight 40 in 2 units of time, room left: 2 +Mover 0 picked up a box of weight 27 in 2 units of time +Mover 1 picked up a box of weight 17 in 2 units of time +Trucker 0 loaded a box of weight 45 in 2 units of time, room left: 1 +House dweller 2 produced a box that weights 33 in 4 units of time +House dweller 2 is done packing +Trucker 0 loaded a box of weight 37 in 1 units of time, room left: 0 +Full truck 0 with load of 344 units of mass departed. Round trip will take 7 units of time +House dweller 1 produced a box that weights 14 in 5 units of time +House dweller 1 is done packing +Mover 0 picked up a box of weight 33 in 1 units of time +Mover 0 is done moving +Mover 1 picked up a box of weight 14 in 1 units of time +Mover 1 is done moving +Trucker 0 loaded a box of weight 31 in 2 units of time, room left: 9 +Trucker 0 loaded a box of weight 27 in 2 units of time, room left: 8 +Trucker 0 loaded a box of weight 17 in 2 units of time, room left: 7 +Trucker 0 loaded a box of weight 33 in 2 units of time, room left: 6 +Trucker 0 loaded a box of weight 14 in 2 units of time, room left: 5 +Truck 0 is not full +Not full truck 0 with load of 122 units of mass departed. One way will take 3 units of time +Truck 0 is finished +Moving is finished!