Hi,
I need to create a program to do a threaded merge sort (kinda), but in the meantime I am trying to pass a struct through the the Merge method (thread runs this method), but I keep getting seg faults. I am sure its something obvious, please help me out.
Here is my code:
/******************************************************************************
* FILE: hello_arg1.c
* DESCRIPTION:
* A "hello world" Pthreads program which demonstrates one safe way
* to pass arguments to threads during thread creation.
* AUTHOR: Blaise Barney
* LAST REVISED: 01/29/09
******************************************************************************/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <iostream>
#include <string>
#define NUM_THREADS 8
using namespace std;
struct t_data
{
int id;
vector<string> v;
};
void *Merge(void *transmit)
{
int tid;
//sleep(1);
struct t_data *test = (struct t_data *) transmit;
tid = test->id;
vector<string> names;
names = test->v;
cout << endl << names[0];
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
struct t_data test;
test.id = 5;
for(int a = 0; a < argc; a++)
{
test.v.push_back(argv[a]);
}
cout << endl << endl;
//The vector works fine this side
for(int a = 0; a < argc; a++)
{
cout << endl << test.v[a];
}
int rc;
pthread_t thread1;
rc = pthread_create(&thread1, NULL, Merge, (void *) &test);
if (rc) {
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
pthread_exit(NULL);
}