2019-05-07 21:39:02 +02:00
# include <stdio.h>
2019-05-07 22:35:58 +02:00
# include <stdlib.h>
# include <pthread.h>
2019-05-07 21:39:02 +02:00
# include "routing4SITA.h"
2019-05-07 22:35:58 +02:00
void * Search ( void * arguments ) ;
2019-05-07 21:39:02 +02:00
int main ( ) {
printf ( " hello world! \n " ) ;
NODE_t end ;
end . id = 8 ;
end . nodescount = 0 ;
NODE_t g ;
g . id = 7 ;
g . nodescount = 0 ;
NODE_t f ;
f . id = 6 ;
f . nodescount = 1 ;
f . nodesnext [ 0 ] = & end ;
f . nodescost [ 0 ] = 7 ;
NODE_t e ;
e . id = 5 ;
e . nodescount = 0 ;
NODE_t d ;
d . id = 4 ;
d . nodescount = 0 ;
NODE_t c ;
c . id = 3 ;
c . nodescount = 1 ;
c . nodesnext [ 0 ] = & end ;
c . nodescost [ 0 ] = 3 ;
NODE_t b ;
b . id = 2 ;
b . nodescount = 3 ;
b . nodesnext [ 0 ] = & e ;
b . nodescost [ 0 ] = 11 ;
b . nodesnext [ 1 ] = & f ;
b . nodescost [ 1 ] = 42 ;
b . nodesnext [ 2 ] = & g ;
b . nodescost [ 2 ] = 8 ;
NODE_t a ;
2019-05-07 22:35:58 +02:00
a . id = 1 ;
a . nodescount = 2 ;
a . nodesnext [ 0 ] = & c ;
a . nodescost [ 0 ] = 15 ;
a . nodesnext [ 1 ] = & d ;
a . nodescost [ 1 ] = 27 ;
2019-05-07 21:39:02 +02:00
NODE_t start ;
2019-05-07 22:35:58 +02:00
start . id = 0 ;
start . nodescount = 2 ;
start . nodesnext [ 0 ] = & a ;
start . nodescost [ 0 ] = 72 ;
start . nodesnext [ 1 ] = & b ;
start . nodescost [ 1 ] = 32 ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
pthread_t startThread ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
THREAD_DATA_t * data ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
data = ( THREAD_DATA_t * ) malloc ( sizeof ( THREAD_DATA_t ) ) ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
data - > node = & start ;
data - > cost = 0 ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
pthread_create ( & startThread , NULL , Search , data ) ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
//pthread_join(startThread,NULL);
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
for ( ; ; ) {
}
return 0 ;
}
void * Search ( void * arguments ) {
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
THREAD_DATA_t * data = ( THREAD_DATA_t * ) arguments ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
printf ( " Number: %i \n " , data - > node - > id ) ;
printf ( " Cost to this node: %i \n " , data - > cost ) ;
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
if ( data - > node - > id = = 8 ) {
printf ( " End found! Cost: %i \n s " , data - > cost ) ;
return NULL ;
}
2019-05-07 21:39:02 +02:00
2019-05-07 22:35:58 +02:00
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 ;
2019-05-07 21:39:02 +02:00
}
2019-05-07 22:35:58 +02:00