Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Umsetzung Semaphor (Examensaufgabe Bayern) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Umsetzung Semaphor (Examensaufgabe Bayern)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Mathlet
Jungspund


Dabei seit: 06.08.2016
Beiträge: 11

Umsetzung Semaphor (Examensaufgabe Bayern) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen,

jetzt habe ich gerade noch einmal eine Anfrage zu Semphoren. Mir ist klar wie die grundsätzlich funktionieren, aber mit einer Aufgabe hier komme ich gerade nicht 100%ig zurecht:
http://www.lehramt-informatik.de/downloa...66114-H2008.pdf => Letzte Aufgabe "Synchronisation"

Mir wird eine rudimentäre Klasse für Semphoren gegeben und ich soll das Problem Initialisieren und zwei Klassen vervollständigen.
Gegeben:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public interface Sempahore{
	public void wait();
	public void signal();	
}
public class BinarySemaphore implements Semaphore{
	public BinarySemaphore(){ ... }
}
public class CountingSemaphore implements Semaphore{
	public CountingSemaphore(int N){ ... }
}


a) Bekomme ich soweit hin (wobei ich mir bei der Variablen studierende nicht sicher bin).
b) und c) bin ich mir aber nicht so sicher... Vor allem die while-Schleife ist ziemlich sicher falsch, da er ja mit dem Semaphor automatisch blockiert...
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
// Kontrolliert Zugang zum Vorzimmer des Professors
Semaphore vorzimmer = new CountingSemaphore(3);

// Der Professor bei der Beratungstätigkeit
Semaphore professor = new BinarySemaphore();

// Die auf den Sitzplätzen wartenden Studierenden
Semaphore studierende = new CountingSemaphore(0);

public class Student extends Thread {
	public void run() {
		vorzimmer.down(); // Student möchte Vorzimmer betreten

		<Student betritt das Vorzimmer des Professors>

		studierende.up();	// Sobald er drin ist, zeigt er an, dass er im Vorzimmer ist und sendet damit ein Signal an den Professor
		professor.down(); // Student möchte zum Professor

		<Student betritt das Zimmer des Professors>

		studierende.down();	// Student darf ins Zimmer, also ist ein Student weniger im Wartezimmer
		vorzimmer.up(); // Student gibt seinen Warteplatz im Wartezimmer frei, da er ja jetzt beim Professor sitzt.
	}
}

public class Professor extends Thread {
	public void run() {
		while ( !studierende.down() ) // Solange die Warteliste leer ist (Aber blockiert da der Professor nicht?)
		{
			<Professor forscht>
		}
		professor.up(); // Professor hat auf das Signal hin aufgehört zu forschen und Student darf rein

		<Professor berät einen Studenten>

		professor.up(); // Student verlässt den Professor
	}
}


Für hilfreiche Tipps jederzeit dankbar :-D
15.08.2016 17:27 Mathlet ist offline Beiträge von Mathlet suchen Nehmen Sie Mathlet in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Umsetzung Semaphor (Examensaufgabe Bayern)