zkouška 2008-01-08
Napsal: 8. 2. 2008 18:29
zhruba takhle jsem si poznamenal zadání
program 2 parametry
cislo, filename
cislo je rozmer pole
soubor - matice cisel
121
345
138
nemusi se kontrolovat, jak to vypada
-> do dvojrozmerneho pole
1) spustit n vlaken, kazde vlanko zpracuje jeden radek
-spocist celociselny prumer na radku a nahradit cisla prumerem
-upspat se na bariere
-posledni vlakno probude vsechny ostatni
2) kazde vlakno dostane sloupec, secte cisla, cislo na pozici sveho indexu pricte dvakrat
-uspat se na bariere
-to same co u jedniciky
-vypsat ten soucet
vypisovat :
vytvoreni vlakna
kazde vlakno ma id(ID)
prichod na barieru
probouzeni z bariery
specialni hlaska pro posledni vlakno na bariere (co probouzi ostatni)
A jak se to udela?
viz. http://wiki.matfyz.cz/wiki/SWI015_P%C5%99%C3%ADklady úplně dole + trocha triviálního kódění
pozn. místo
for (i = 1; i < NTHREADS; i++) pthread_cond_signal(ts->cv);
je lepší použít
pthread_cond_broadcast(ts->cv);
Hodně štěstí na dalších termínech.
:wq
program 2 parametry
cislo, filename
cislo je rozmer pole
soubor - matice cisel
121
345
138
nemusi se kontrolovat, jak to vypada
-> do dvojrozmerneho pole
1) spustit n vlaken, kazde vlanko zpracuje jeden radek
-spocist celociselny prumer na radku a nahradit cisla prumerem
-upspat se na bariere
-posledni vlakno probude vsechny ostatni
2) kazde vlakno dostane sloupec, secte cisla, cislo na pozici sveho indexu pricte dvakrat
-uspat se na bariere
-to same co u jedniciky
-vypsat ten soucet
vypisovat :
vytvoreni vlakna
kazde vlakno ma id(ID)
prichod na barieru
probouzeni z bariery
specialni hlaska pro posledni vlakno na bariere (co probouzi ostatni)
A jak se to udela?
viz. http://wiki.matfyz.cz/wiki/SWI015_P%C5%99%C3%ADklady úplně dole + trocha triviálního kódění
pozn. místo
for (i = 1; i < NTHREADS; i++) pthread_cond_signal(ts->cv);
je lepší použít
pthread_cond_broadcast(ts->cv);
Hodně štěstí na dalších termínech.
:wq