[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