Skip to content

Design

This page describes the design rationale of all major components of the SnoParallel package.

Interactions between user and manager

The following sequence diagram describes the user calls and manager responses.

useruseruseruseruseruserusermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagerusermanageruserusermanagermanageruseruseruseruseruseruserusermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagermanagerinitialisationstart commandreport readyloop[for all shared variables]request shared variablereturn shared variableadd referencesalt[workers already added]report workers already addedalt[ready]report readyadd workersalt[workers already added]report workers already addedalt[ready]report readywork cycle(s)alt[single work cycle]loop[for all work items]add work item*report addedrequest status*report statusalt[multiple sequential work cycles]loop[for all work cycles]loop[for all work items]add work item*report addedrequest status*report statusalt[multiple independent work cycles]loop[for all work cycles]loop[for all work items]add work item*report addedrequest status*report statusadd work itemalt[add function]add functionalt[workers not added]report workers not yet addedalt[added]report addedalt[add method]add methodalt[workers not added]report workers not yet addedalt[no reference index]no reference indexalt[added]report addedrequest statusrequest statuswaitalt[finished]report donealt[timeout]report work not finishedalt[failed]report worker(s) failedterminationstop commandreport stopped
520. plantuml.com | 520: Web server is returning an unknown error

Web server is returning an unknown error Error code 520

Visit cloudflare.com for more information.
2025-10-03 13:52:17 UTC
You

Browser

Working
Amsterdam

Cloudflare

Working
www.plantuml.com

Host

Error

What happened?

There is an unknown connection issue between Cloudflare and the origin web server. As a result, the web page can not be displayed.

What can I do?

If you are a visitor of this website:

Please try again in a few minutes.

If you are the owner of this website:

There is an issue between Cloudflare's cache and your origin web server. Cloudflare monitors for these errors and automatically investigates the cause. To help support the investigation, you can pull the corresponding error log from your web server and submit it our support team. Please include the Ray ID (which is at the bottom of this error page). Additional troubleshooting resources.

User interactions between user and shared variable

The following sequence diagram describes the user calls and shared variable responses.

useruseruservariablevariablevariablevariablevariablevariablememorymemorymemoryuservariablememoryuseruservariablevariablememorymemoryuseruseruservariablevariablevariablevariablevariablevariablememorymemorymemoryalt[read]during workread valuerequest old valuereturn old valuereturn old valuealt[write]during workwrite valuevalue checkalt[incorrect value]report incorrect valuealt[correct value]write new valuereport donereport doneafter workupdate commandwrite old valuereport donereport done
useruseruservariablevariablevariablevariablevariablevariablememorymemorymemoryuservariablememoryuseruservariablevariablememorymemoryuseruseruservariablevariablevariablevariablevariablevariablememorymemorymemoryalt[read]during workread valuerequest old valuereturn old valuereturn old valuealt[write]during workwrite valuevalue checkalt[incorrect value]report incorrect valuealt[correct value]write new valuereport donereport doneafter workupdate commandwrite old valuereport donereport done

Interactions between manager and workers

The following sequence diagram describes the manager calls and worker responses.

managermanagermanagermanagermanagerworkersworkersworkersworkersworkersqueuequeuequeuequeuequeuemanagerworkersqueuemanagermanagerworkersworkersqueuequeuemanagermanagermanagermanagermanagerworkersworkersworkersworkersworkersqueuequeuequeuequeuequeueinitialisationstart commandreport readystart commandreport readywork cycle(s)loop[for all work cycles]loop[for all work items]add work itemreport readyloop[until empty]get work itemreturn work itemprocess work itemget work itemreport emptyreport doneterminationstop commandreport stoppedstop commandreport stopped
managermanagermanagermanagermanagerworkersworkersworkersworkersworkersqueuequeuequeuequeuequeuemanagerworkersqueuemanagermanagerworkersworkersqueuequeuemanagermanagermanagermanagermanagerworkersworkersworkersworkersworkersqueuequeuequeuequeuequeueinitialisationstart commandreport readystart commandreport readywork cycle(s)loop[for all work cycles]loop[for all work items]add work itemreport readyloop[until empty]get work itemreturn work itemprocess work itemget work itemreport emptyreport doneterminationstop commandreport stoppedstop commandreport stopped

Interactions between manager and shared variable

The following sequence diagram describes the manager calls and shared variable responses.

managermanagermanagermemorymemorymemoryvariablevariablemanagermemoryvariablemanagermanagermemorymemoryvariablevariablemanagermanagermanagermemorymemorymemoryvariablevariableinitialisationallocate memoryreturn referencestart commandwrite initial valuereport donereport readyterminationdeallocate memoryreport done
managermanagermanagermemorymemorymemoryvariablevariablemanagermemoryvariablemanagermanagermemorymemoryvariablevariablemanagermanagermanagermemorymemorymemoryvariablevariableinitialisationallocate memoryreturn referencestart commandwrite initial valuereport donereport readyterminationdeallocate memoryreport done

Interactions between workers and shared variable

The following sequence diagram describes the lock and value features of the shared variables.

worker 1worker 1worker 2worker 2worker 2variablevariablevariableworker 1worker 2variableworker 1worker 1worker 2worker 2variablevariableworker 1worker 1worker 2worker 2worker 2variablevariablevariableprocess work itemwrite new valueread valuereport blockedwaitreport doneread valuereturn old value
worker 1worker 1worker 2worker 2worker 2variablevariablevariableworker 1worker 2variableworker 1worker 1worker 2worker 2variablevariableworker 1worker 1worker 2worker 2worker 2variablevariablevariableprocess work itemwrite new valueread valuereport blockedwaitreport doneread valuereturn old value