6. feladat
Feladva nov. 22-28, 2010
Határidő dec. 13, 2010
POSIX-Solaris szálak (threads) - szinkronizálás nélkül
1. Implementáljuk a termelő/fogyasztó problémáját szálakkal (a termelő, illetve fogyasztó véges körkörös pufferbe ír). Hozzunk létre több termelő, illetve fogyasztó szálat. Egy bizonyos idő eltelte után a főprogram jelezzen a szálaknak, hogy befejeződhetnek (pl. egy globális változó beállításával), majd várja meg a szálak befejeződését (a termelők egyből leállnak, a fogyasztók előbb kiurítik a puffert s csak utána fejeződnek be). Ne feledkezzünk meg a szinkronizálásról!
2. Írjunk egy kliens és egy szerver programot. A szerverhez több kliens kapcsolódhat (üzenetet küldve neki). A szerver
"Kliens x: üzenet", ahol x egy szám, mely a szerverhez való kapcsolódás sorrendjét tükrözi.
Max. N szál futhat egyszerre. Egy "kérés" feldolgozása 1-3 másodpercet vegyen igénybe. Egy speciális üzenetre fejeződjön be a szerver, előbb azonban várja meg a még futó szálak befejeződését.
3. Írjunk
programot, mely N szálat hoz létre. Ezek mindenike kiír egy üzenetet, az azonosítóját, és megpróbálja végrehajtani
a paraméterként kapott shell-parancsot, melynek kimenetét a "<nr>_out"
(nr=1,..,N) állományba írja. A művelet befejezése után is írjon
ki egy-egy üzenetet
4. Egy program létrehoz egy 1 és 0 elemeket tartalmazó mátrixot. Hozzunk létre több szálat. Minden szál n másodpercenként, soronként végigjárja a mátrixot, és amennyiben valamelyik mátrixelem szomszédságában több, mint 5 1-es érték van, akkor ennek az elemnek az értéke is 1 lesz, ha pedig több, mint 5 0-s szomszédja van, 0-vá válik ő is. A főprogramban kiírjuk a mátrixot mindaddig, ameddig már nem változik többé.
5. Egy program létrehoz egy 1 és 0 elemeket tartalmazó mátrixot. Hozzunk létre több szálat. Minden szál n másodpercenként, soronként végigjárja a mátrixot, és amennyiben valamelyik mátrixelem szomszédságában több, mint 5 0-s érték van, akkor ennek az elemnek az értéke 1 lesz, ha pedig több, mint 5 1-es szomszédja van, 0-vá válik. . A főprogramban kiírjuk a mátrixot mindaddig, ameddig már nem változik többé.
6. Írjunk programot, mely egy NxN-es mátrixot generál, majd létrehoz N szálat. Ezt követően időnként generál egy i, illetve j indexet, és véletlenszerűen módosítja a mátrix i,j elemét, majd kiírja a módisított mátrixot egy állományba (a végére). Az i. szál időnként kiszámolja külön az i. sorban, illetve i. oszlopban levő elemek összegét, és csak akkor írja azt ki, ha valami módosult az előzőekhez képest.
Tippek / gyakori hibák