diff --git a/src/routing4SITA b/src/routing4SITA index 95e560b..2207e95 100755 Binary files a/src/routing4SITA and b/src/routing4SITA differ diff --git a/src/routing4SITA.c b/src/routing4SITA.c index 7b6069a..9f8e14d 100644 --- a/src/routing4SITA.c +++ b/src/routing4SITA.c @@ -1,8 +1,13 @@ #include +#include +#include #include "routing4SITA.h" + +void *Search(void* arguments); + int main() { printf("hello world!\n"); @@ -45,35 +50,106 @@ int main() { b.nodescost[2] = 8; NODE_t a; - b.id = 1; - b.nodescount = 2; - b.nodesnext[0] = &c; - b.nodescost[0] = 15; - b.nodesnext[1] = &d; - b.nodescost[1] = 27; + a.id = 1; + a.nodescount = 2; + a.nodesnext[0] = &c; + a.nodescost[0] = 15; + a.nodesnext[1] = &d; + a.nodescost[1] = 27; NODE_t start; - b.id = 0; - b.nodescount = 2; - b.nodesnext[0] = &a; - b.nodescost[0] = 72; - b.nodesnext[1] = &b; - b.nodescost[1] = 32; - - - - - - + start.id = 0; + start.nodescount = 2; + start.nodesnext[0] = &a; + start.nodescost[0] = 72; + start.nodesnext[1] = &b; + start.nodescost[1] = 32; + pthread_t startThread; + THREAD_DATA_t* data; + data = (THREAD_DATA_t*) malloc(sizeof(THREAD_DATA_t)); + data->node = &start; + data->cost = 0; + pthread_create(&startThread, NULL, Search, data); + //pthread_join(startThread,NULL); + for(;;){ + + } return 0; } + + +void *Search(void* arguments){ + + + THREAD_DATA_t *data = (THREAD_DATA_t*) arguments; + + + + printf("Number: %i\n", data->node->id); + printf("Cost to this node: %i\n", data->cost); + + if(data->node->id == 8){ + printf("End found! Cost: %i\ns", data->cost); + return NULL; + } + + if(data->node->nodescount == 0){ + printf("No next nodes\n"); + return NULL; + } + + pthread_t threads[data->node->nodescount]; + + for(int i = 0; i < data->node->nodescount; i++){ + + THREAD_DATA_t* nextdata; + + nextdata = (THREAD_DATA_t*) malloc(sizeof(THREAD_DATA_t)); + + nextdata->node = (data->node->nodesnext[i]); + + nextdata->cost = data->node->nodescost[i] + data->cost; + + //nextdata->cost = 42; + + pthread_create(&threads[i], NULL, Search, nextdata); + + } + + /* + for(int i = 0; i < data->node->nodescount; i++) { + pthread_join(threads[i],NULL); + } + */ + + + return NULL; + +} + + + + + + + + + + + + + + + + + diff --git a/src/routing4SITA.h b/src/routing4SITA.h index 7f8fdec..eca658c 100644 --- a/src/routing4SITA.h +++ b/src/routing4SITA.h @@ -6,6 +6,7 @@ typedef struct node NODE_t; +typedef struct threadData THREAD_DATA_t; struct node { int id; @@ -15,6 +16,12 @@ struct node { }; +struct threadData { + NODE_t* node; + int cost; +}; + +