Hallo,
Ich bin ein Informatik Schüler der 12. KLasse. Mir wurde eine Aufgabe gestellt, die ich momentan nicht komplett schaffe zu lösen.
Wir sollen mit VB das Philosophenproblem (de.wikipedia.org/wiki/Philosophenproblem) Multithreaded lösen.
Ich habe auch schon einiges geschafft aber ich habe das Problem, das die Threads so nacheinander auf ein Array zugreifen, das sie quasi Ressourcen nutzen die nicht mehr vorhanden sind.
Wenn ihr wisst was das Philosphen Problem ist, dann können also quasi zwei Philosphen gleichzeitig essen obwohl keine Gabeln vorhanden sein sollten.
Ich habe hier mal die Sub() die die Threads behandeln:
Hat jemand eine idee wie und wo ich die Threads blockieren muss, so das dieser Fehler nicht auftritt?
Verschoben. ~Thunderbolt
Ich bin ein Informatik Schüler der 12. KLasse. Mir wurde eine Aufgabe gestellt, die ich momentan nicht komplett schaffe zu lösen.
Wir sollen mit VB das Philosophenproblem (de.wikipedia.org/wiki/Philosophenproblem) Multithreaded lösen.
Ich habe auch schon einiges geschafft aber ich habe das Problem, das die Threads so nacheinander auf ein Array zugreifen, das sie quasi Ressourcen nutzen die nicht mehr vorhanden sind.
Wenn ihr wisst was das Philosphen Problem ist, dann können also quasi zwei Philosphen gleichzeitig essen obwohl keine Gabeln vorhanden sein sollten.
Ich habe hier mal die Sub() die die Threads behandeln:
VB.NET-Quellcode
- Private Sub Schleife(ByVal i As Integer)
- Dim time As Integer = rnd.Next(10, 100)
- While Not fertig = True
- Thread.Sleep(time)
- If denken(i) = True Then
- While Gabelnda(i) And Gabelnda((i + 1) Mod Gabelnda.Length - 1) = False
- Thread.Sleep(200)
- End While
- Gabelnda(i) = False And Gabelnda((i + 1) Mod Gabelnda.Length - 1) = False
- essen(i) = True
- denken(i) = False
- Else
- Gabelnda(i) = True And Gabelnda((i + 1) Mod Gabelnda.Length - 1) = True
- essen(i) = False
- denken(i) = True
- End If
- End While
- End Sub
Hat jemand eine idee wie und wo ich die Threads blockieren muss, so das dieser Fehler nicht auftritt?
Verschoben. ~Thunderbolt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()