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