From a9cdc5d4ea2508673b2f237075c9cbf56cef7099 Mon Sep 17 00:00:00 2001 From: "@alexandru.braslasu" <alexandru.braslasu@stud.acs.upb.ro> Date: Sun, 10 Dec 2023 14:21:50 +0200 Subject: [PATCH] Tema --- src/.gdb_history | 17 +++++++++++++++++ src/os_threadpool.c | 4 ++-- src/os_threadpool.h | 2 -- src/parallel | Bin 40080 -> 40216 bytes src/parallel.c | 7 ++++--- src/serial | Bin 28480 -> 28664 bytes 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/.gdb_history b/src/.gdb_history index 042f8b2..d4270d5 100644 --- a/src/.gdb_history +++ b/src/.gdb_history @@ -74,3 +74,20 @@ b thread_loop_function r ../tests/in/test1.in n q +b os_threadpool.c:102 +r ../tests/in/test1.in +ni +q +b os_threadpool.c:64 +r ../tests/in/test1.in +ni +q +b os_threadpool.c:120 +r ../tests/in/test1.in +ni +info threads +ni +info threads +thread 2 +ni +q diff --git a/src/os_threadpool.c b/src/os_threadpool.c index 8756cbf..aad0bb0 100644 --- a/src/os_threadpool.c +++ b/src/os_threadpool.c @@ -39,10 +39,10 @@ void enqueue_task(os_threadpool_t *tp, os_task_t *t) assert(t != NULL); /* TODO: Enqueue task to the shared task queue. Use synchronization. */ - pthread_mutex_lock(&tp->mutexCoada); + //pthread_mutex_lock(&tp->mutexCoada); list_add_tail(&tp->head, &t->list); pthread_cond_broadcast(&tp->Wait); - pthread_mutex_unlock(&tp->mutexCoada); + //pthread_mutex_unlock(&tp->mutexCoada); } /* diff --git a/src/os_threadpool.h b/src/os_threadpool.h index f31d59a..da8277f 100644 --- a/src/os_threadpool.h +++ b/src/os_threadpool.h @@ -31,9 +31,7 @@ typedef struct os_threadpool { pthread_cond_t WakeUp; int stop; unsigned int threadsOut; - int (*verifProcessing)(void); - /* TODO: Define threapool / queue synchronization data. */ } os_threadpool_t; diff --git a/src/parallel b/src/parallel index cc2d045898678a0e598d65676a1e5ccc4ee525ff..88cb07462b5b54ce0a6b4723fdd3bed9dcfbb750 100755 GIT binary patch delta 3709 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 Bic|mq delta 3714 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 E1H2HPlK=n! diff --git a/src/parallel.c b/src/parallel.c index 05417db..78900dd 100644 --- a/src/parallel.c +++ b/src/parallel.c @@ -37,11 +37,11 @@ static void action(void *arg) static void process_node(unsigned int idx) { /* TODO: Implement thread-pool based processing of graph. */ - pthread_mutex_lock(&tp->mutexSuma); + pthread_mutex_lock(&tp->mutexCoada); sum += graph->nodes[idx]->info; - pthread_mutex_unlock(&tp->mutexSuma); graph->visited[idx] = DONE; for (unsigned int i = 0; i < graph->nodes[idx]->num_neighbours; ++i) { + if (graph->visited[graph->nodes[idx]->neighbours[i]] == NOT_VISITED) { graph->visited[graph->nodes[idx]->neighbours[i]] = PROCESSING; os_arg_t *arg = malloc(sizeof(*arg)); @@ -53,9 +53,10 @@ static void process_node(unsigned int idx) enqueue_task(tp, t); } } + pthread_mutex_unlock(&tp->mutexCoada); } -int verifProcessing() +int verifProcessing(void) { for (unsigned int i = 0; i < graph->num_nodes; ++i) { if (graph->visited[i] == PROCESSING) diff --git a/src/serial b/src/serial index 317ab1a62ae71ba361c52a77619005524db3dcbe..e0865c76c5a667357f2a9b9c688ae2c5db9057e5 100755 GIT binary patch delta 618 zcmX|*Ur5tY6vywm{I=ijHuV?#)1Z;dKVTNkVHhF0zds+Uk$X`vqSSC3u7#8m^-$77 zFHvp>Nipal80kYXe!T=f^bo$76eL0~ni0}d8-%bPitgD@x-aK*Kj(YSz3;Z6wgYn= z{C2wBIl|rTN5&JMpDyh$ek;A4SPm`Cx-u_}1-{!2MdMD-zLjehoa*y(r-FBTE^+?e z*y~#c7{j@6Yp7yj%%`#fXH0Y|jHxWi<Plrao2-bpbzhL$CLZGV@Csz{NhAepxEt}@ zdoGg>F;<@v#CBpuw8$xkgV-ik$vcUiVugGIu_nsIjl^#8hB8gWJ~2Y95&OkDWeyPs z#5{R-R&s~vC+}&)>F5KP!r#$WUQ_UB%nyUu8#@M@csVxESd$?L(6Gk%29{$dD777% zgs*rm?x#y8zQ_M6IG8x;t*7r(nisAytF4_g)-r>|L@xzDCWf1<v~MzaSVrV=nT5f# zU#k47%;@?6?BF9kpw)L>HFxD$+YemTLr^k)>LrW%7~~5qUQEtoCDn!97uM7n`4ngR zfif17uRuLscj;o%gVj{fK7A{jyBW;gNHctWe%7d5v{}(UbcI$l{qIr#)Hr5_J{VoY uRd2&t>%kwXVD!2RBYB_LNSXEzj^@w6CtS>jp^9JfVR3rG?DXSkruiSAHJzdW delta 603 zcmexypYgyw#t9ls2huibMKOtZOw9Tm@4doa{rOeP+ae4~Z2?sqH_u>tXv~<pxytM- z8`DOX$%VFJOq-Y|SDQsMF-_n6%yuOsqv_-c_R5BbSQ!{3*cm1=F)(myu`n>OGx#z9 z0q07fIE2l@c?K*#5h%>T88!Kd{VGPA$^8z2j58-cbP%mC0;=TZOakkY0kOG2Y!*%> zpe}B15SxRuA0*BLV)JmW0*Uj2*aDnKKx{q`TZFS6q=p~Fmf+L{u?0YE8P0nkHG&|v z0%rzDTqG07*5I@QiHoXCE_G~Xbea6qQJIOGb+Vk345RX7YbQm<=aXZd-1xYG8W<Ho zngtk`7EIpgqzzJa&ncU6^JFh)84xGK`5BWS>*N3z9Wk)#29Ro|i75<h9I8wV3`(Ap zC%IUI6rOhpmuCi<m#r@jR00IT5Q>3u&S!R@Q-Nw+UELTzP40135CEH%05L0vL1p*k zJ+6j~m7CwWE@Nd+WCYs4AU0XocPf*f-sE_n<LsV5tC$!hphBBJ`mSe`{R38J1tb|6 zfAjGINk$->0mRqS+x*IZ3Y(Cgo_=XbW=^qwPJTKF>m^UF4NI6T8-9B8oA5WlIA@)F pE6<G6EfC_;3zH@D%^4*o2j<%|T1=jpZ_ibe3X!p6oO~-?4gkO+g{lAm -- GitLab