12.01.2014 Aufrufe

2-up - ETH Zürich

2-up - ETH Zürich

2-up - ETH Zürich

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Ein weiteres Problem:<br />

Der atomare Kontrolltransfer<br />

• Bei Nutzung von Threads taucht oft folgendes Problem auf:<br />

• Es soll („abwechselnd“) immer nur einer von n Threads laufen<br />

• Jeder Thread soll an einer gewissen Stelle die Kontrolle an<br />

einen bestimmten anderen Thread transferieren<br />

• Wenn die Kontrolle zurücktransferiert wird, dann soll genau an<br />

dieser Stelle weitergemacht werden<br />

• Wie implementiert man dies?<br />

833<br />

Lösung mit suspend / resume?<br />

• Idee: Alle bis auf jeweils einen Thread blockieren<br />

• Problem: T2 könnte unmittelbar nach T2.resume() loslaufen<br />

• T1.resume() würde dann verpuffen, da T1 noch nicht blockiert ist<br />

• T2 würde sich mit suspend() blockieren;<br />

• T1 läuft weiter und blockiert sich dann ebenfalls sofort mit der<br />

nächsten Anweisung Deadlock!<br />

834<br />

344

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!