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 minden egyes kérés kezelésére létrehoz egy külön szálat, az pedig kiírja az érkező üzeneteket az alábbi alakban:

 "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 minden szál.

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