Hoj,<br><br>no riesenie je jednoduche - mutexy by nemali pri volani lock/unlock alokovad/dealokovavat ziadnu pamat... Nie je az taky problem spravit si strukturu vlakna tak, ze tie vlakna mozes potom zapajat do nejakeho zoznamu (teoreticky... prakticky je to trochu zlozitejsie, ale aj nam sa to podarilo :-))...
<br><br>Andrej<br><br><div class="gmail_quote">On Dec 30, 2007 5:42 PM, Josef Reidinger <<a href="mailto:josef.reidinger@seznam.cz">josef.reidinger@seznam.cz</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Dobry den,<br>delame na prvnim rozsirenem zadani. A pri zajistovani primitivy jsme se<br>dostali do situace ze ktere si nevim rady co s ni. Problem je<br>nasledujici: Malloc je chranen synchronizacnim primitivem. Jeden proces
<br>si zamkne malloc. Kdyz se pokusi jiny proces taky mallocovat, tak se<br>uspi. Ale tady je kamen urazu, protoze tento jiny proces musi byt pridan<br>do fronty uspanych procesu a k tomu se opet pouziva malloc, takze se<br>
program dostane do nekonecne smycky (spis ale deathlock, kvuli<br>zamknutemu mutexu).<br>rekurzivni synchronizacni primitiva nejsou reseni tohoto problemu,<br>protoze kazde dalsi se akorat prida do seznamu cekajicich a tim porad
<br>vola malloc.<br>Ochrana spinlockem, krome toho ze neni efektivni, tak taky vzhledem k<br>tomu ze spinlock nezarucuje ferovost pristupu casto skonci uvaznutim<br>nektereho z cekajicich procesoru (stava se to vetsi u poctu procesoru
<br>pres patnact).<br>Dalsi reseni mne moc nenapadaji (krome nejakych krkolomnych). Neni<br>nejake jednodusi reseni ochrany mallocu?<br>JR<br><br>_______________________________________________<br>OSy mailing list<br><a href="mailto:OSy@dsrg.mff.cuni.cz">
OSy@dsrg.mff.cuni.cz</a><br><a href="https://dsrg.mff.cuni.cz/mailman/listinfo/osy" target="_blank">https://dsrg.mff.cuni.cz/mailman/listinfo/osy</a><br></blockquote></div><br>