Zum Inhalt springen

syrvn

Mitglieder
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von syrvn

  1. Ok, werd mir das morgen mal bei Wikipedia durchlesen. Muss jetzt leider los! Das Problem ist halt, dass das mal eine Prüfungsaufgabe war und mehr als ich oben geschrieben habe steht in der Prüfung auch nicht. Also sollte es irgendwie vll doch zu lösen sein. Gut, werd mich Morgen wieder melden. Schoenen Abend! Grüße Syrvn
  2. Hi flashpixx, du hast das schon ganz richtig erkannt. Das ganze sollen zwei unterschiedliche Threads sein, die einfach parallel nebeneinander laufen. Das ganze ist darüberhinaus auch nur in einer Art pseudo-sprache (aehnlich java) geschrieben. Auch ist nur das Kernproblem dargestellt: Also der gegenseitige ausschluss. Es geht darum, dass der Erzeuger nur dann ein erzeugtes element auf den Stack legen kann, wenn dieser noch nicht voll ist. Der Verbraucher darf nur dann ein Element verbrauchen, wenn mind. 1 auf dem Stack vorhanden ist. Der Gegenseitige Ausschluss hier ist, dass niemals beide gleichzeitig auf den Stack zugreifen dürfen sondern immer nur einer der beiden. Bei einer Fehlerhaften Implementierung kann es auch passieren, dass beide in der While do {}*schleife hängen bleiben und keiner mehr was macht. Das wäre dann eine sog. Verklemmung, die natuerlich nicht auftreten darf. Also das Grundprinzip / Problem - wie du aus meiner erläuterung hoffentlich entnehmen konntest - verstehe ich schon aber ich weiss eben nicht ob das ganze verklemmungsfrei abläuft oder ob sonst ein Fehler auftritt... Add Terminierung: Es ist schon richtig, dass die Threads nie terminieren, aber das ist für das eigentliche Problem nicht wichtig. Die Threads sollen einfach unendlich lange laufen und ihre Arbeit verrichten. Gruß Syrvn
  3. Hi, ich hab folgende zwei Lösungen für das E-V-P gegeben und soll nun begründen, ob diese korrekt sind oder nicht. Leider blick ich nicht ganz durch... 1 Es gilt: dran = 0; sowie anzahl = 0; Beide Variablen sind vom Typ Integer. // Erzeuger while (true) { Element.erzeuge(); While (dran != 0) do {} Element.putonStack(); Anzahl++; Dran = 0; } // Verbraucher while (true) { Element.erzeuge(); While (dran <= 0) do {} Element.getfromStack(); Anzahl--; Dran = 1; Verarbeite(element); } Was mir hier gleich aufgefallen ist ist, dass der Verbraucher am Anfang ein Element erzeugt. Das kann ja schon einmal nicht stimmen. Ich denke der Rest ist korrekt bis auf die Whiles mit dem dran. Keine Ahnung wie dran gesetzt werden muss, dass das ganze funktioniert. Das versteh ich einfach nicht. 2 Es gilt.. anzahl = 0; lock = false; TestAndSet ist wie in der Vorlesung definiert. // Erzeuger While (true) { Element.erzeuge(); While(anzahl >= N) do{} While(TestAndSet(lock)) do {} Element.getFromStack(); Anzahl++; lock = false; } // Verbraucher While (true) { While (anzahl <= 0) do{} While(TestAndSet(lock)) do {} Element.getFromStack(); Anzahl--; lock = false; Verarbeite(element); } Beim Erzeuger wird Element.getFromStack() aufgerufen das muss wohl Element.putonStack() heissen. Ansonsten finde ich sieht das auch ganz gut aus, wobei ich wieder Probleme habe zu sagen ob die jeweiligen ersten While schleifen mit anzahl stimmen. Kann mir jemand von euch hier weiterhelfen? Grüße syrvn

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...