diff --git a/cs677/pa2/threaded.cc b/cs677/pa2/threaded.cc index 0bd40b1..edca7ca 100644 --- a/cs677/pa2/threaded.cc +++ b/cs677/pa2/threaded.cc @@ -96,7 +96,9 @@ int main(int argc, char * argv[]) for (int i = 0; i < num_threads; i++) { - int ret = pthread_create(&threads[i], NULL, &calcSimMatrixThread, (void *) i); + int * arg = new int; + *arg = i; + int ret = pthread_create(&threads[i], NULL, &calcSimMatrixThread, arg); if (ret) { cerr << "Error " << ret << " when creating thread!" << endl; @@ -134,7 +136,8 @@ bool readFile(char * fileName, vector & v) /* Compute portions of the similarity matrix between two character arrays */ void * calcSimMatrixThread(void * arg) { - int id = (int) arg; + int * realarg = (int *) arg; + int id = *realarg; int s_size = s->size(); int t_size = t->size(); int (*F)[s_size][t_size] = (int (*) [s_size][t_size]) matrix; @@ -187,5 +190,6 @@ void * calcSimMatrixThread(void * arg) cout << "Maximum value is " << max_val << " at position (" << max_x << ", " << max_y << ")" << endl; + delete realarg; return NULL; }