glibc Skrevet 24. september 2003 Del Skrevet 24. september 2003 Hei! Jeg har kommet opp i ganske store problemer i forhold til en pthreads oppgave på skolen. http://fag.sib.hibo.no/kurs/11163/oppgaver/oppg04.pdf I den forbindelse lurer jeg på om det er noen som kan gi meg noen hint i forhold til hvordan jeg kan løse denne oppgaven. Jeg har relativt ny til både C og Pthreads, men trenger altså sårt litt hjelp i denne sammenhengen ! Noen som tar en utfordring? Lenke til kommentar
kjetil7 Skrevet 24. september 2003 Del Skrevet 24. september 2003 Hva med å prøve å gjøre oppgaven selv? Siden du har fått det som oppgave vil jeg tro det er noe du kan/skulle kunne noe om? Når du eventuelt støter på et litt mer konkret problem kan noen helt sikkert hjelp deg.... Lenke til kommentar
daysleper Skrevet 24. september 2003 Del Skrevet 24. september 2003 Vet ikke helt hva du lurer på, men her er litt så du kommer i gang i hvertfall. #include <iostream> #include <pthread.h> #include <unistd.h> using namespace std; void *hare(void* param) { for(;;){ cerr << "Hare" << endl; sleep(2); } } void *rev(void* param) { for(;;){ cerr << "tRev" << endl; sleep(4); } } main(int argc, char** argv) { pthread_t hareThread; pthread_t revThread; pthread_create(&hareThread, 0, hare, NULL); pthread_create(&revThread, 0, rev, NULL); sleep(10); return(0); } Lagre filen som test.cpp og kompiler den slik: g++ test.cpp -g -Wall -o test -lpthread Etter 10 sekunder avsluttes programmet og de 2 trådene som ble laget avsluttes også. Jeg tar alle utfordringer - spesiellt hvis jeg får litt igjen når jeg lykkes. Lenke til kommentar
gspr Skrevet 24. september 2003 Del Skrevet 24. september 2003 Hei! Jeg har kommet opp i ganske store problemer i forhold til en pthreads oppgave på skolen. http://fag.sib.hibo.no/kurs/11163/oppgaver/oppg04.pdf I den forbindelse lurer jeg på om det er noen som kan gi meg noen hint i forhold til hvordan jeg kan løse denne oppgaven. Jeg har relativt ny til både C og Pthreads, men trenger altså sårt litt hjelp i denne sammenhengen ! Noen som tar en utfordring? Gidder du slenge ut en tekstversjon av oppgaven? Har glemt å legge inn en pdf-leser... ooops :wink: Lenke til kommentar
glibc Skrevet 24. september 2003 Forfatter Del Skrevet 24. september 2003 Hver hare og hver rev representeres som en tråd. Harer spiser, formerer seg, og beveger seg rundt på øya. Harer dør bare når de blir spist av en rev. Revene vandrer rundt på øya, og spiser harer når de finner dem. Når de har spist mange nok harer innenfor et tidsrom, formerer de seg. Hvis de ikke finner noen harer å spise innen et gitt tidsrom, dør revene av sult. Løsningen må kunne vise hvor mange rever og harer det er til et hvert tidspunkt. Det at en hare er i live kan representeres som en integer-variabel i et stort, delt array. Hvis en rev ønsker å spise en hare må den først ta en mutex og så endre ”livstilstanden” for den aktuelle haren fra 1 til 0. Vi kan overlate til harene selv å oppdage at de er blitt spist; de må da terminere seg selv (Alternativt kan revene bruke pthread_kill() til å fortelle haren at den er i ferd med å bli spist). Før en hare dør må den oppdatere den globale variabelen som holder styr på totalt antall harer. En rev dør dersom den ikke har fått noe å spise på 20 tidsenheter. Reven kan forflytte seg en distanseenhet per tidsenhet (omtrent som en konge på et sjakkbrett). For hver 4. hare en rev spiser, blir det født en ny rev (vanligvis vil det i naturen måtte være to rever av motsatt kjønn – det ser vi bort fra) En hare kan ikke bevege seg og spise samtidig, og siden harer er ganske dumme, kan vi anta at det er ganske tilfeldig om en hare flytter på seg eller spiser – men den må spise minst hver 10. tidsenhet. Harene forflytter seg på samme måte som revene. Hver 4. gang en hare spiser, blir det født en ny hare. Øya kan representeres som en to-dimensjonal array. Fx. 1000x1000. Lenke til kommentar
gspr Skrevet 24. september 2003 Del Skrevet 24. september 2003 Interessant... tar og diller litt med det der i helgen tror jeg.. av egen interesse altså. Legger ut det jeg kommer frem til (hvis jeg kommer frem til noe), men ikke stol på at jeg gjør det :wink: 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å