RESOURCE = (acquire->continue->RESOURCE).
USER = (acquire->use->continue->USER).
||RESOURCE_SHARE = (a:USER || b:USER || {a,b}::RESOURCE).
Wie unterscheidet dieser FSP beide USER-Pfade?
Wie funktioniert die gemeinsame Aktion continue
zwischen a.USER
und a.RESOURCE
sicherzustellen, dass der a.USER
Pfad nicht mit dem b.USER
Pfad nicht verflechten? Zum Beispiel erlaube ich der LTSA die folgende Spur nicht, und ich verstehe nicht warum nicht.
a.acquire->b.acquire->a.use->b.use->...
Diese Verwirrung folgt aus dem Vergleich mit der folgenden FSP/LTSA. Entfernen Sie die continue
Aktion in beiden Prozessen und wir sind links mit:
RESOURCE = (acquire->RESOURCE).
USER = (acquire->use->USER).
||RESOURCE_SHARE = (a:USER || b:USER || {a,b}::RESOURCE).
Diese FSP/LTSA DOES plötzlich für die USER
Pfade erlauben verflochtenen zu werden, da wir die folgende Spur durchführen können:
Anscheinend hinzufügen fortfahren zwingt die USER
Pfade getrennte Wege zu gehen. Warum allerdings?
Quelle: Die erste FSP stammt aus dem Buch "Concurrency" von Jeff Magee und Jeff Kramer.