From fccf397c64457ffc83bca699e32297b4bd24734b Mon Sep 17 00:00:00 2001 From: localhorst Date: Tue, 7 May 2019 22:35:58 +0200 Subject: [PATCH] addes threads --- src/routing4SITA | Bin 20728 -> 20936 bytes src/routing4SITA.c | 112 +++++++++++++++++++++++++++++++++++++-------- src/routing4SITA.h | 7 +++ 3 files changed, 101 insertions(+), 18 deletions(-) diff --git a/src/routing4SITA b/src/routing4SITA index 95e560b8fb02ac6685ea20100b110c8e2de5ed78..2207e95fa79d0816a82f95abaf06ef42020fa855 100755 GIT binary patch delta 3648 zcmZ`+Z%|a%6~FiGF7B>>*kyOSAXOeQw3@`-MGcY)?pt8-q9CAR(L{ytXMh^n%F@zK z<4VYO*g+cfrZd`3CT7xfY{w7G@CB_EjMgTkbTa3wsw$|5k?t2fF zrf28fbI$Lad+xdC-gn>Kxwq)Gx9L!3M#P~IB&{W+pB;bd*LG$RAYqo{ANcH5x>jZ3 z8PpdVrkc^<#G&a3r@=G3R?}yT6(JbBUefRe-b=l_fo9rf^+>b)9Iei+mo)MQf=Uu)V#oxIoN<&k_df7Rrse$;3&wwC9?Q|2MbMGJ(_u*qB)iMAbXX>9g& zb@~ECR}M4*6m1~~+h1%#Ljj3&N4rSmaQmTXD|xB$;K9x&K4uDpC1Mgk0xgA~3Z zk#{d|w;^5)G7{RcNP3BNyF{wF)9lK^Nf=Zo~5GD1cf49kkKjk-oL6BZwj+Qtx2r(2f~ zU2bjlrRThg7LuN$kc*;2@822!jU)GI&26F2(c*j#d1b73)N5Z|2nZ#$&F3hJvl7#dt9b4V;We0mLyN0wxB|J;Hei+H?)a zNdSIS;IBiQ4R|uHfCK_aWgzJ>A|Qe<1D1?8prXY%t>HBSZ+@W0R2d9oxSdl2|G_@t zIW_>#;LkBGOE^$VDwr=}19f1C7Yf7FdAAD|U*L&kY9)03^Z_n!=)0lap}NqnoviOO z#u6`|WQl2(xD0VXg5?^(hYXO!)iI|WQ;67ODfK>#2BrbU3WgQ1AvFB2Ixf2O%~`vj zc<8lZ-s=*03ICaI!#Wy6DCYQhw|i_WxTRj3_pm(b5i_%>57#Ai?BA-|7oMPC5g`@xbK!~fV_mS3v^P7E{%1DW^8WLo7ef0& z`$Grz@wYNodFNIWQpX0@BHvlL<~A&(HFfV_BOhjbX+I%5W81r5da>p3cjUZwJ1On# ziptSWIoj6VB_HZ+ZqeZIp=P>}GcTOGRoj|MamK_e0_`gR^Li#u9$cD zeEEeYMc{Zq2{J2!VSY&Uy4|j+q=Ucb3(^K|^XE8Ix-TAcNTd8YzdyG}M`2An5yb-l z2?`+e4t{sDi$}~YoCb27<@)tvx6WI6ZqUVRBr^{L6eDHw4D{FHKq-JCyf<*bX3WgY zdyBF?5*Y%EX2(wnQX_npy*!XF+n8Pji$Egz4x4eY`6W-}4@uK*p1tm4N%8Op>oQTx zT;C!s_3+sGyqr9}ubb9MFB3Q2B^`mbR>HH|v(z(kdA&!X5q|60Q&O3SM+<&{{XZ+1 zkeFxW{Kl)6#YUo#1Pt%tr;FvqMnYA9HJbDJ{o-a?$Qw6%X+5+a6BHE+(hzHWz+pk#HX))xkr*W~iS4E|F!# z*s|!0)DI6Om@@x7w4a{kwI%+Fg?Ua3C&+WN0@6d85#s;O_rAcLq@KT5;F1Bvpi z(wwX}Ayb)Tl0rRkVS=WX=azbHO<;9^mGMxi*J&)E;nRUW^a!>q-q1Z4#`!JA$7^B5 zIgp%ECQ%lQbQN*DxygzMj28l=n}BCPiHu#mPlL&A9541EXbvcN&4Ore>%EM9{j}ce zpMayku|PUZERr?~-nWp%=>*&kIA*)h|09eqE#W^bb7p))?~7ktq>FUqm9iqbT)Xw^ z7hOf!Qdv<_dSIPzo$pzGA-vqBU3DMFZ-(1k+THhYyr_I-+Rm27!%b}?d&=LWa3omx z+?Ht?;J29HW*l3vRVy|+jYFzlzpb9(dn)`+q8~)!Di29^@Kb{TU}^Mf5x=3q~?2-&^Uk8*lXNT7IIk zz;3)Cb8Gqa$^zbB>7cVbt11TX@Tn>&lcEJFGQFwbem7!;e=7rL-b`9iXG!SrfFA%~~qfMSO2ff!!L`)D;r{1*myjH1!3_ Im$Q}s1>_>dv;Y7A delta 2713 zcmZWrYitx%6ux(6Te`c2&c3o+OW9c-i4>gO($bcccBd_+v(U#P@I#`~DiFXJUd0fj zlm?g37?Q#vBt)YWmDt3@;%Wkkkv1v|(I3?CgJ4J&1k)OM8A)maUC+5QQ=y*Cp2v63 zJ@?#u&fJ+xpYVwR-XHSniq42k&e*w@qh)7YoelxAPRG&fnyXYctx_4hTq~~OrfEy2 zm^O!_JnW1~)+qGyU_{YOOR3j|V#}-*BMawwN5rq1UVhc|vSp^ieCKXH0@=@xnBk1!_9chZ()M_jS{2*5w|fsPcf{s034cUf{FuF8w)eShPK?Lq!dZu}*v^7H zC*nE@mXCiKZaC(pzm1%7A5-+6^1F$?(N~SWTgJiL50dK=nPJ7JGb1xHdyzSJ`pg4$30#%!4X!u(?u_lv<#HGEs$qd=e$NmV>w-ho z*_ad2O!Jij^vg6~r8P6nr)CK8sjyNz(SvrKNp+(}RW^<^UorYp`^40K;hfUZ$P->G zP%~#Ls8NkFDgP9foy_Ir9s%A)^{H@UXl7CjJ*lRd)DYT|(7vWQs2NAZGPv|P;d=$S z+r%kJ#D@ib6?vJ!n@=HlNr2aoi(O*i9&_PLiXzh*7?~1#CUTL9(Yo>^S;W|S!QZ^fhSK$9eoYGGvXqcrOlA31b%kT5T83kf&6T(*>!iGqr^9xkR9^#p$&qm^f zkjy(?tYA|UWv$DGf)H^i*1}#tJ^)0;f+MSkRoWb>pdPksT6s*?1x}kF8nSF^GNPnq zyG)bS!DTJZL*R^tJ%&RUC^a2X2$n^okqK)CmTCu~oEQ>rPuTaMx88?&Z{iB@SQu(z zNzY;&r_wV4q0Ru2>L$WJUAy_0qe{&(}%&k*|^H$q3x=rhlsl zNL+`1mY$USJ~&?W7R@iL{#gq7($}jm=DF=eF$r8g0K;{v+fJyIu)K1ZUB8LPaO**y zL>`c5upuD}7#&DJcCrZ}U3iRV(RMQfJnw;>*I6fsEbCfjq!{kc$Up zKPv#P2jl?5^VD0o3gu`Ovsk)I4|Bc~dK-d0r>xcxr-qFBR${ZJTE@m#qQbFN=nf;Y zi??3rxRm{J5TlGy&r=+`1ud8z7XChLHk}{{Hon9wVOL``F+D;ShdIOKr$rv8d2A|z zu!ubtnuqyeyfGS~+nvbHa|bFa3o+HopFyN4T;77Hf~dVKF$Gx^aj!&YtJ{!}?J&?3 zEPd0OH5JS9c^h#R>+I|4L(L*Mk2+5dfqVNr-iB`9mvTz28{;d-rgCHKH!Yt&hGgfvs&Zm)+I{8k}yc^4Q&Mf1qVyyv@vLU%TqGJ4%It z_G+hH6g<85INlMFjyOKGU4jpE#HA+{aI2%9e*lqWoL`2nWL)~a7EUMYc_-XV#$DMu gGo#P*p=?c+>oC1ckbdE?9nB5&NF%+>;SXcZzo~+E4gdfE 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; +}; + +