diff --git a/MergesortMulti b/MergesortMulti index 171f64e..59d4776 100755 Binary files a/MergesortMulti and b/MergesortMulti differ diff --git a/MergesortMulti.c b/MergesortMulti.c index a01af65..4a7c357 100644 --- a/MergesortMulti.c +++ b/MergesortMulti.c @@ -24,9 +24,12 @@ void *m_sort(void *args) { struct arg_struct *aus = (struct arg_struct *) args; int mid, left = aus->le, right = aus->ri; - + + + if (right > left) { + mid = (right + left) / 2; pthread_t lth, rth; struct arg_struct lst, rst; @@ -39,7 +42,12 @@ void *m_sort(void *args) pthread_join(lth, NULL); pthread_join(rth, NULL); merge(left, mid+1, right); + + } + + + pthread_exit(0); } @@ -79,7 +87,7 @@ void merge(int left, int mid, int right) mid = mid + 1; temp_pos = temp_pos + 1; } - + for (i=0; i <= num_elements; i++) { numbers[right] = temp[right]; diff --git a/makefile b/makefile index ac3fd1f..759e1c1 100644 --- a/makefile +++ b/makefile @@ -34,7 +34,7 @@ MergesortSingle: MergesortSingle.o MergesortSingle.o: g++ -c MergesortSingle.c MergesortMulti: MergesortMulti.o - g++ -lpthread MergesortMulti.o -o MergesortMulti + g++ -pthread MergesortMulti.o -o MergesortMulti MergesortMulti.o: g++ -c MergesortMulti.c diff --git a/testwork b/testwork deleted file mode 100755 index dc94ee3..0000000 Binary files a/testwork and /dev/null differ diff --git a/testwork.c b/testwork.c deleted file mode 100644 index df951e0..0000000 --- a/testwork.c +++ /dev/null @@ -1,42 +0,0 @@ -#include "cse356header.h" - -main(int argc, char *argv[]) { - int pipefd[2]; - pid_t ls_pid, wc_pid; - - pipe(pipefd); - - // this child is generating output to the pipe - // - if ((ls_pid = fork()) == 0) { - // attach stdout to the left side of pipe - // and inherit stdin and stdout from parent - dup2(pipefd[1],STDOUT_FILENO); - close(pipefd[0]); // not using the right side - - char *lsargs[] = {"ls", "-l", NULL}; - execvp("/bin/ls", lsargs); - perror("exec ls failed"); - exit(EXIT_FAILURE); - } - wait(NULL); - // this child is consuming input from the pipe - // - if ((wc_pid = fork()) == 0) { - // attach stdin to the right side of pipe - // and inherit stdout and stderr from parent - dup2(pipefd[0], STDIN_FILENO); - - close(pipefd[1]); // not using the left side - char *wcargs[] = {"wc", NULL}; - execvp("wc", wcargs); - perror("exec wc failed"); - exit(EXIT_FAILURE); - } - - // explicitly not waiting for ls_pid here - // wc_pid isn't even my child, it belongs to ls_pid - - return EXIT_SUCCESS; -} - diff --git a/z b/z deleted file mode 100755 index 5da5662..0000000 Binary files a/z and /dev/null differ diff --git a/zD.c b/zD.c deleted file mode 100644 index 6e0f49b..0000000 --- a/zD.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "cse356header.h" -#include "readline.c" -#define MAX_ARGS 50 -#define MAX_PIPES 50 -const char * delim_no_pipe = " \t\n"; - -void parse_argv(char *buffer, char *argv[]) -{ - char *cp = buffer; - for(int argc = 0; argc < MAX_ARGS; argc++) { - if((argv[argc] = strtok(cp, delim_no_pipe)) == NULL) - break; - cp = NULL; - } -} - -void parse_pipe(char *buffer, char *argv[]) -{ - char *cp = buffer; - for(int argc = 0; argc < MAX_PIPES; argc++) { - if((argv[argc] = strtok(cp, "|")) == NULL) - break; - cp = NULL; - } -} - -struct pair { - int n[2]; -}; - -main() -{ - while (true) { - int argc; - char *argv[MAX_ARGS], *comm[MAX_PIPES]; - - write(1, "$ ", 2); - char buffer[256], buffer2[256]; - readline(0, buffer, 255); - buffer[strlen(buffer) - 1] = '\0'; // get rid of cr - strcpy(buffer, replace_str(buffer, "~", getenv("HOME"))); - strcpy(buffer2, buffer); - parse_argv(buffer, argv); - if(strcmp("exit", argv[0]) == 0) exit(0); - - pair pipefd; - pipe(pipefd.n); - parse_pipe(buffer2, comm); - for(int i = 0; comm[i] != NULL; i++) { - write(1, "\"", 1); - write(1, comm[i], strlen(comm[i])); - write(1, "\"", 1); - if(fork() == 0) { - if(i != 1) {dup2(pipefd.n[1], 1); close(pipefd.n[0]);} - if(i != 0) {dup2(pipefd.n[0], 0); close(pipefd.n[1]);} - parse_argv(comm[i], argv); - execvp(argv[0], argv); - perror("exec failed"); - exit(1); - } - write(1, "IN", 2); - wait(NULL); - write(1, "OUT", 3); - } - } - exit(0); -}