2009-10-29 6 views
52

Wie können Sie mehrere Ausführungsstränge in einem Sequenzdiagramm oder einem ähnlichen Diagramm deutlich darstellen?Wie können mehrere Threads im Sequenzdiagramm dargestellt werden?

Ich konnte keine klaren Beispiele finden. Alle Diagramme, die ich sehe, werden verwendet, um einen einzelnen Thread zu veranschaulichen.


-Update: Die akzeptierte Antwort war das beste Beispiel, das ich sah, aber es ist ein gutes Stück zu wünschen übrig nicht verläßt. Am Ende habe ich die Threads in separaten Sequenzdiagrammen dargestellt. Ich bin mir nicht sicher, ob das Sequenzdiagramm für mehrere Threads funktioniert.

+1

scheint identisch mit http://stackoverflow.com/questions/954193/is-there-an-inituitive-uml-approach-to-depict-threads – feuGene

Antwort

23

Hier ist ein Diagramm, das nützlich sein kann, und auf der linken Seite können Sie die Erklärung siehe: http://sdedit.sourceforge.net/multithreading/example/index.html

Multithreading Sequence Diagram

+0

ich das sah. Nicht schlecht .. macht mir aber ein bisschen schwindlig, wenn ich es lese;) –

+0

Die Handhabung von mehreren Threads wird etwas entmutigend sein, da ein Teil des Grundes für die Verwendung von Threads ist, dass sie autonom sind. Möglicherweise möchten Sie verwandte Themen als separate Programme zusammenführen. Thread 1 (Controller-Thread) startet also, erstellt 3 Threads, verarbeitet sie und meldet sie an den Controller zurück. Dann wären diese in einem Sequenzdiagramm. Es können 20 andere Threads ignoriert werden, aber das ist in Ordnung, da sie andere nicht verwandte Tasks ausführen. –

1

Sie in Message Sequence Charts interessiert sein, oder MSC.

Here ist eine Folie, die MSC in Kürze beschreibt.

+0

Gab es eine Verbindung mit Beispielen der Diagramme? –

+0

Ich habe meine Antwort bearbeitet, um auf ein Beispieldiagramm zu verweisen. – mouviciel

+1

Ich sehe nicht, wie das mehrere Threads darstellt. Ich muss mehr Koffein brauchen. –

5

Sie können ein "par" -Fragment verwenden, um mehrere synchrone Aufrufe zu modellieren, die parallel ausgeführt werden. Das Fragment besteht aus einem Rechteck mit der Bezeichnung "par". Das Rechteck ist in mehrere Kästchen unterteilt, die jeweils einen Ausführungs-Thread darstellen.

Ein Beispiel ist auf dieser Seite gegeben: http://www.ibm.com/developerworks/rational/library/3101.html#N10227

+0

Sie sollten auch ein Beispiel in Ihrer Antwort zeigen. Da Ihr Link untergehen kann ... –

+0

@PhilipG ist die aktuell ausgewählte Antwort in dieser Hinsicht sogar noch schlimmer. –

+1

Dies funktioniert nicht, wenn der Anruf einfach einen Thread spawnen und sofort zurückgeben muss. – LuckyLikey

10

ich diese Frage auf Google gefunden und war kein großer Fan der Antwort akzeptiert, damit ich mit meiner eigenen kam gerade. Dies ist, wie ich das Threading-Modell in meiner Anwendung dargestellt (meine Organisation nennt es die ‚Concurrency Sicht‘):

Concurrency viewpoint

Hoffentlich hilft es jemand.

2

Dies ist ein Duplikat von Sihayas Antwort, aber mit Details, wie man es mit Tools im Web erreichen kann und einem visuellen Beispiel, das nicht verschwinden wird.

Bei der UML-Sequenzdiagrammmethode wird das "par" -Fragment verwendet, um mehrere parallel verarbeitete Nachrichten zu modellieren. Unten ist eine Textbeschreibung, die, wenn sie in das PlantUML Werkzeug eingegeben wird, das im Internet verfügbar ist, das folgende Diagramm erzeugt.

@startuml 

Person -> MicrowaveOven : Cook Food 
activate MicrowaveOven 
par 
MicrowaveOven -> MicrowaveOven : Activate Magnetron 
else 
MicrowaveOven -> MicrowaveOven : Activate Rotation Motor 
end 

MicrowaveOven --> Person : Delicious Food 
deactivate MicrowaveOven 

@enduml 

par UML example