Async Swimlane Diagram - ZjzMisaka/PowerThreadPool GitHub Wiki
@startuml
skinparam swimlaneWidth same
skinparam ActivityBackgroundColor #FEFEFE
skinparam ActivityBorderColor #333333
|User Layer|
start
:Submit Async Task;
|#E1F5FE|PTP Layer|
:Custom SynchronizationContext;
:Unified Execution Engine;
note left
* Native Async
* Sync/Async Interleaving
end note
|User Layer|
:Execute User Task;
fork
:Await User Code;
|PTP Layer|
:Capture Continuation;
:Manage via PTP;
note left
* Apply PTP Features
(Pause, Stop, etc.)
end note
|User Layer|
:Resume Task;
fork again
:Call 3rd Party API;
|#F5F5F5|3rd Party Library Layer|
:Internal Async Logic;
:Await Internal Code
(Assuming ConfigureAwait(false))
====
<b>[PTP: Does not manage its continuations]</b>
<b>[3rd: Does not rely on PTP-specific features]</b>;
:Default ThreadPool;
:Resume Internal Logic;
|User Layer|
:Return Result;
end fork
|User Layer|
:Task Completed;
stop
@enduml