How can I model two parallel threads that perform operations on an object in a sequence diagram?
How to model parallel threads in a UML sequence diagram
38.2k Views Asked by Christian At
1
There are 1 best solutions below
Related Questions in MULTITHREADING
- How can I outsource worker processes within a for loop?
- OpenMP & oneTbb difference
- Receiving Notifications for Individual Task Completion OmniThreadLibrary Parallel.ForEach
- C++ error: no matching member function for call to 'enqueue' futures.emplace_back(TP.enqueue(sum_plus_one, x, &M));
- How can I create a thread in Haskell that will restart if it gets killed due to any reason?
- Qt: running callback in the main thread from the worker thread
- Using `static` on a AVX2 counter function increases performance ~10x in MT environment without any change in Compiler optimizations
- Heap sort with multithreading
- windows multithreading CreateMutex
- The problem of "fine-grained locks and two-phase locking algorithm"
- OpenMP multi-threading not working if OpenMPI set to use one or two MPI processor
- WPF Windows Initializing is locking the separated thread in .Net 8
- TCP Client Losing Connection When Writing Data
- vc++ thread constructor throwing compiler error c2672
- ASP.NET Core 6 Web API : best way to pause before resending email
Related Questions in UML
- steps to create a web app with backend and database and web
- How to present this example concept in UML: Using 2 LCD displays in C/C++
- In the UML diagram, in the Class diagram, what does stereotype mean <<compound>>?
- UML representation of containerized services
- uml class diagram for boxing match
- Polymorphism can be described as:
- Why am I getting a plantUML syntax error with a statechart in a package?
- System or external system as an actor in a use case?
- How to model statechart behavior inheritance using UML?
- Can we have an interface create objects of another interface in UML Class Diagrams?
- Is my relationships correct in my class diagram
- How to attach a Port shape to a class shape?
- How to correctly create a sequence diagram?
- How can I insert activity diagram image to an use case in Enterprise architect?
- Use case extends or include
Related Questions in SEQUENCE-DIAGRAM
- How to represent fmethods as parameters in the sequence diagram and memory stack
- How to correctly create a sequence diagram?
- How to show function calls on a C++ class member variable on a UML sequence diagram?
- How to draw a sequence diagram for my University manager MAUI app?
- If I had an object user in sequence diagram and I wanted to make that object interact with the interface,should I use it's own functions?
- Including icons in Activity diagram in PlantUML?
- How to represent 'if (condition1 && condition2)' in sequence diagram
- Sequence diagrams with references and VOPC
- What is the difference of refuse and veto when looking at refinment
- How to handle an exception thrown by an actor i.e. cancelOperation() in sequence diagram?
- How to change formatting of conditional blocks in PlantUML sequence diagram
- PlantUML produces error when specifying asynchronous messages
- Syntax error when declaring a class in PlantUML .puml file
- How can i represents a sequence diagram that has nested alternative in State machine?
- Eclipse Papyrus DataSet for Class and Sequence Diagram
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
In a sequence diagram, a lifeline represents an individual participant in the interaction. So your object that is shared between the threads should appear once and only once in the diagram.
You would also represent with a lifeline each threaded object that interact with your shared object. It could be thread instantiations directly, or it could be several objects that are created in the context of the two threads.
But this is not sufficient. In principle, the sequence of the interactions with your object is indicated by the vertical order of the messages. So how to show that interactions may happen in parallel ?
For representing parallelism, you would use a combined fragment introduced by the operator
par. Graphically (see link), the combined fragment is represented as a boxed region in your sequence diagram, parallel sequences being separated by horizontal dashed lines (each of the slices would then correspond to one thread of execution.P.S: this example shows 2 threads, but you can add more threads by adding more horizontal dashed lines.