Zic0 Skrevet 16. mai 2010 Del Skrevet 16. mai 2010 (endret) Hei Har nettopp hatt tråder som en del av pensum og lurer på hvor er det det er hensiktsmessig å ha tråder? Tenker da på løkker. F.eks Hva hvis det skal kjøres 1000 metoder 100 ganger hver? Hvor vil det være like greit å la det hele gå sin gang, istede for å kjøre det samtidig. Endret 16. mai 2010 av Zic0 Lenke til kommentar
quantum Skrevet 17. mai 2010 Del Skrevet 17. mai 2010 (endret) Hvis ingen blir lei av å vente, kan det være like greit å la det «gå sin gang». Hvis du derimot skal regne ut meningen med life-the-universe-and-everything kan det være greit å la det putre og gå i en egen tråd, mens gui fortsetter videre og brukeren kan gjøre noe matnyttig. Hvis du har beregninger som kan kjøres i paralell kan programmet ditt utnytte flerkjerneprosessorer bedre dersom du har skrevet disse beregningene som tråder. Hvaslags pensum er det du har lest som ikke forklarer selve pointet med tråder? Eller har du ikke fått med deg pointet :o) Endret 17. mai 2010 av quantum Lenke til kommentar
Zic0 Skrevet 17. mai 2010 Forfatter Del Skrevet 17. mai 2010 Jeg har jo fått med meg pointet. Nå snakker jeg selvfølglig om å kjøre paralellberninger som tråder. Det bør jo være en viss mengde med beregninger for at det skal være nyttig? Hvis det er 3 beregninger man skal gjøre så regner jeg jo med at det går greit å ta dem etter hverandre. Bare lurte på hvor mange beregninger det burde være før man bruker tråder til det... Lenke til kommentar
TheMaister Skrevet 17. mai 2010 Del Skrevet 17. mai 2010 Dette er ikke noe fasitsvar. Benchmarking er din venn. Lenke til kommentar
GeirGrusom Skrevet 18. mai 2010 Del Skrevet 18. mai 2010 Det er heller ikke alle problemer som kan løses med flere tråder. Men si at dersom det er en løkke som kjører ~>1000 ganger, og det er mulig å parallerlisere oppgaven, burde det gjøres. Noen ganger må derimot oppgaven sees fra en annen måte for å paralleliseres. Eksempelvis i Glorg som jeg lager for tiden, deles helle programmet i 4 tråder, en som bare rendrer så lenge det er noe å rendre, en som behandler logikk, en som behandler fysikk og en som behandler lyd. Alt kunne blitt dyttet i én tråd, men på en 4 kjerners prosessor vil dette gi 1/4 del av ytelsen i forhold til å fordele dette utover flere tråder. En kan derimot si at fysikk er avhengig av logikken, men ved å vinkle oppgaven annerledes, kan en si at logikken skal hinte mot hva fysikken skal gjøre, og ikke bestemme dette. I min motor gjøres dette ved at logikken forteller kun hvor et objekt vil flytte seg (gi kraft i en retning) mens fysikkmotoren gjør den faktiske forandringen. Grafikkmotoren på sin side vil bare lese av resultatet fra logikk og fysikktråden og vise et bilde basert på det. Lydtråden vil utelukkende streame data til lydkortet og køe opp lydavspilling(lyd er dog ikke implementert enda) Det er dog ingen fasitløsning, men tråding er ofte fordelaktig, men på små datamenger (4 tall for eksempel) så vil opprettelsen av trådene kanskje være dyrere enn selve beregningen. Som TheMaister skrev: benchmarking er din venn. Det er ikke alltid løsningen er å dele opp i tråder. Selv antall tråder kan være et viktig faktum: flere er ikke nødvendigvis bedre. Lenke til kommentar
LostOblivion Skrevet 29. mai 2010 Del Skrevet 29. mai 2010 En ting er sikkert. Driver du med GUI, finner du deg ofte i en situasjon hvor applikasjonen din henger. Kanskje fordi den har gått inn i en ventetilstand for å vente på data fra for eksempel en socket, eller at den får mye å regne ut. Som for eksempel en funksjon som skal regne ut de 1 million første primtallene, før den returnerer. Derfor benyttes det svært ofte en egen tråd for GUI. Litt mer teknisk vil det i de fleste tilfeller tilsvare at du har en egen tråd som hele tiden kjører gjennom en messageloop og invokerer de andre trådene i applikasjonen din. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå