21. oktober 2004 - 09:33Der er
7 kommentarer og 1 løsning
Problemer med tråd arkitektur
Kan følgende arkitektur lade sig gøre?
main | controller | | | | tråd tråd tråd tråd
Umiddelbart ser det vel meget nemt og tilforladeligt ud. main opretter en controller-tråd, der skal lytte på input fra noget hw, og efterfølgende opretter en ny tråd til at servicere denne hw. vel lidt ligesom en web-server der lytter efter requests og opretter en tråd for hver ny connection. Jeg spørger naturligvis kun fordi det giver mig problemer! så længe main opretter de underste tråde kører alt fint, men hvis controlleren skal oprette dem (jf "figuren") opstår der segmentation faults. så mine spørgsmål er: .Er der noget specielt jeg skal være opmærksom på? segmentation faults kan så vidt jeg ved, skyldes pointere der 'træder' på hinandens memory...kan dette være tilfældet her? .Nogen bemærkninger til 'arkitekturen'?
Så er koden minimeret. Jeg har lavet en generel tråd klasse for at få det hele til at se lidt pænere ud. De tre tråde på følgende "figur" arver fra denne klasse. Hovedobjektet Thread og følger i de første filer.
main | Controller | | Sim_rx Provider_rx
->alle fire tråde skal køre samtidigt. Problem : første gang efter genstart opstår der segmentation fault efter ca. 20 sekunder. Anden gang programmet startes kører det ved første øjekast fint, men meget af funktionaliten(som er skåret fra) virker ikke. Hvis Sim_rx og Provider_rx startes fra main (dvs. controller oprettes ikke) kører alt uden problemer. QUE?
undskyld for den lange post. Sim_rx og provider_rx er iøvrigt nøjagtig ens (bortset fra nvanet self) når de som her er stribbet for funktionalitet, så der kunne jeg nok ha sparet lidt linier. but anyways, håber nogen kan lure hvad der skaber segmentation fault
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.