BS Uebung - Semaphoren

Das ‘Tafelbild’

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

BS Uebung - Semaphoren
Da ich zum Mitschreiben heute zu faul war und eine DigiCam dabei hatte, und einige Leute glaube ich beim Abschreiben keinen Platz mehr zwischen den schon vorhandenen Zeilen gefunden haben :*) …
Im Anhang das Tafelbild

Attachment:
DSC00909_klein.JPG: https://fsi.cs.fau.de/unb-attachments/post_18728/DSC00909_klein.JPG


das ist doch alles trivial, wozu mitschreiben… :-p


wozu gibts denn das SP1 Skript ;o)


Ja, nur dass in BS der Stempel “bitte nicht versuchen, dies zu verstehen” fehlt :smiley:


wo is der fehler… (find ihn evtl. eh selbst, und dann lösch ich den code wieder, weil er mir zu peinlich is :stuck_out_tongue: )

Semaphore mutex(1);
Semaphore read_or_write(1);
Semaphore writer_waiting(1);
int readers=0;

reader()
{
    writer_waiting.p();
    writer_waiting.v();

    mutex.p();
        if (!readers)
            read_or_write.p();
        ++readers;
    mutex.v();
    
    read();    

    mutex.p();
        --readers;
        if (!readers)
            read_or_write.v();
    mutex.v();
}

writer()
{
    writer_waiting.p();  
        read_or_write.p();
            write();
        read_or_write.v();
    writer_waiting.v();
}	

soll ich? wenn ja welchen? (natürlich nur deine eigenen)
Vermutlich den hier drüber, aber besser mal fragen…


hm, ne, jetzt nicht mehr… nachher vllt :stuck_out_tongue:
Ach, wenn mir das Leser-Schreiber-Problem schon im Forum zum Problem wird… :wink:

Ich sollte vielleicht noch anmerken, dass obiger Code nicht unbedingt einen Fehler haben muss, ich find’ nur keinen :wink:
Und es is irgendwie zu einfach, um richtig zu sein :stuck_out_tongue:


Ich haette ihn jetzt auch schon fast geloescht :] - wenn du auch so provozierende Sachen schreiben musst…


OK, ich tu’s nie wieder!

(Außer ich poste mal wieder Code, dann könnt’s schon vorkommen :p)


buoeh, aus irgend einem albernen grund hab ich jetzt ne ami-tastenbelegung… gottes wege sind unergruendlich

was ja glaub ich in besagter uebung noch zur sprache kam, war, dass tafelbildliche loesung des 2. lr-problems wieder bei vielen schreibern und wenigen lesern wiederrum zum problem wird, da naemlich jetzt die leser kaum zum zug kommen.

In meiner “Loesung”, sofern sie denn eine ist, haengen sowohl wartende schreiber als auch leser an der writer_waiting-sache…

wenn also die semaphorwarteschlangen schedulingstrategiekonform funktionieren, bspweise mittels strategy-pattern, und diese aging beruecksichtigt, HRRN oder FB+wartezeitbedingte prioritaetsanhebung, muesste das jetzt hier dann doch eingigermassen fair ablaufen, oder?

wah, ich seh scho, ich sollt mal ins bett… n8


Du meinst nicht zufällig sowas hier?:

http://ivs.cs.uni-magdeburg.de/bs/lehre/sose00/bs1/seminare/seminar10.shtml

PS.: Man schaue sich mal die Mitarbeiterliste (Ehemalige) dieses Lehrstuhls an…


hihi… bei dieser Lösung wird halt dafür gesorgt, dass wartende Schreiber auf jeden Fall vor wartenden Lesern zum Zug kommen (wg. dieser halt/vorhalt-geschichte), bei meinem Code warten Schreiber und Leser gleichberechtigt an writers_waiting… theoretisch :stuck_out_tongue: