[OSy] Dealokovanie detached vlakna po normalnom skonceni
Michal Klempa
michal.klempa at gmail.com
Thu Nov 4 10:47:45 CET 2010
:) OK, tak to asi zvladnem nejakym garbage collectorom.
Este pridam otazku, ze ci mozu dva thready volat rozne metody
thread_xxx na jednu thread_t.
Tym by sa mi mohlo stat, ze jeden ide thread killnut - je na zaciatku
funkcie thread_kill, este nezakazal interrupty. schedule.
druhe vbehne do metody thread_join povedzme, je na zaciatku, nestihol
zakazat interrupty. schedule.
prvy killne a uvolni vlakno.schedule.
druhy zakaze interrupty a saha na dealokovanu pamat lebo mu vlakno
zmizlo pod rukami. A to sa mu stalo, lebo mu zradny kolega poslal svoj
thread_t handle (co je u nas pointer na strukturu thread).
V zadani nie je vyslovene napisane (alebo som zas noob?) ze ci to je
dovolene/zakazane takto tie vlakna pouzivat.
Ak je to dovolene, musim si navzdy pamatat nejake handles vlaken s tym,
ze toto je platne a pointer je tam, toto je neplatne, daj volajucemu
facku.
D~
Michal Klempa
On Thu, 04 Nov 2010 10:31:11 +0100
Petr Tuma <petr.tuma at d3s.mff.cuni.cz> wrote:
> Dobry den,
>
> neeeeee :) jednoduchy ale chybny program neni to, co jsem mel na
> mysli, kdyz jsem rikal, ze je nekdy lepsi preferovat jednoduchy
> program pred slozitym.
>
> Samozrejme neni pripustne, aby se pouzivala pamet, ktera jiz byla
> dealokovana (a mimochodem tohle jsou presne situace, kdy si muzete
> prichystat neprijemne chvilky ladeni pozdejsich casti zadani).
>
> Petr Tuma
>
>
> On 11/04/2010 10:11 AM, Michal Klempa wrote:
> > Zdravim,
> > vlakno sa pocas behu stalo detached, jeho main { } normalne skonci.
> > V takom pripade ma kernel uvolnit strukturu thread_t a pamat urcenu
> > na stack vlakna.
> >
> > Prvy approach -> miesto main { } daj do panenskeho kontextu vlakna
> > moju funkciu execute:
> > execute {
> > thread->main(thread->data);
> > disable_int
> > free(thread->stack);
> > free(thread);
> > schedule();
> > }
> >
> > Tak na to pozeram a nechapem, co sa stane pri switch_cpu_context.
> > Execute bezi v kontexte vlakna, ktore prave rusim, a ja pamat kde je
> > tento kontext ulozim. Takze hoci ju uvolnim, ulozi tam
> > switch_cpu_context este moj kontext ako by to ukladal na vrch
> > zasobnika? Tu pamat nikto nestihne medzicasom pouzit... snad?
> >
> > Je toto ten easy approach, ktory ocakavate? Aby som zas nevymyslal
> > hardcore veci:-)
> >
> > Dik. Michal Klempa
> >
> > _______________________________________________
> > OSy mailing list
> > OSy at d3s.mff.cuni.cz
> > https://d3s.mff.cuni.cz/mailman/listinfo/osy
>
> _______________________________________________
> OSy mailing list
> OSy at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/osy
More information about the NSWI004
mailing list