<div dir="ltr">Bine, acum să încerc să fac un rezumat la ceea ce am înțeles:<div>- thread-ul care face so_init ar trebui să se afle în coada noastră cu priorități</div><div>- nu se asigură nicicum că so_end va fi făcut după ce toate thread-urile își vor încheia execuția așadar trebuie să ne asigurăm noi că acest lucru se întâmplă în so_end(rulând cu helgrind am văzut că se poate face so_end în timp ce mai sunt thread-uri care folosesc acele structuri de date și apare segfault)</div><div>- în cadrul thread_start din enunț trebuie să ne asigurăm că thread-urile își apelează handler-ul în ordinea din coada cu priorități iar după apelarea acestuia ele trebuie să se scoată singure din coadă sau pentru a apela pthread_join() în so_end ar trebui să le punem la finalul cozii și să lăsăm eliberarea doar thread-ului care face so_init</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">În joi, 2 mai 2019 la 11:42, Mihai Barbulescu <<a href="mailto:b12mihai@gmail.com">b12mihai@gmail.com</a>> a scris:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, 1 May 2019 at 19:31, Ionuț Mihalache via so<br>
<<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>> wrote:<br>
><br>
> Și încă o întrebare pe care am uitat să o adresez: Cum să fac debug pentru că dacă folosesc printf pot apărea sincronizări nedorite?<br>
<br>
Sugestia 1 (profesionista): logging intr-o zona din RAM/memoria<br>
procesului mapata dinainte in procesul tau numit "scheduler" in care<br>
threadurile scriu. Apoi ai alt proces care colecteaza aceste loguri. O<br>
scriere in RAM tot o sa te coste deci poti avea desincronizari. Cele<br>
doua procese impart un /dev/shm.<br>
Sugestia 2 (cea mai la indemana pt voi):<br>
<a href="http://valgrind.org/docs/manual/hg-manual.html" rel="noreferrer" target="_blank">http://valgrind.org/docs/manual/hg-manual.html</a><br>
<br>
GDB nu poate fi folosit prea reliable pentru ca asa cum printf strica<br>
sincronizarile ghici ce-ar face un breakpoint :)<br>
<br>
-- <br>
Cu stimă,<br>
Mihai Bărbulescu<br>
</blockquote></div>