Skip to content

Sync Async PlantUML

ZjzMisaka edited this page Mar 27, 2026 · 3 revisions
@startuml
skinparam BackgroundColor #F5F7FA
skinparam defaultTextAlignment center
skinparam ArrowThickness 1.5
skinparam componentStyle rectangle
skinparam roundcorner 10
skinparam monochrome false

skinparam component {
  BackgroundColor #FFFFFF
  BorderColor #90A4AE
}

skinparam actor {
  BackgroundColor #ECEFF1
  BorderColor #607D8B
}

skinparam package {
  BackgroundColor #EBF5FB
  BorderColor #90A4AE
}

skinparam database {
  BackgroundColor #FFF8E1
  BorderColor #FFB300
}

skinparam ArrowColor #1565C0

actor "Developer / Client" as User

rectangle "PowerPool (Unified API)" as PP_API #EBF5FB {
    [QueueWorkItem\n(Sync Action/Func)] as QSync
    [QueueWorkItem\n(Async Task)] as QAsync
    [Control API\n(Stop/Pause/Wait)] as Ctrl
    [Fetch API\n(Get Results)] as Fetch
}

rectangle "Unified Core Representation" as CORE #E3F2FD {
    [WorkID\n(Unique Identifier)] as WID
    [WorkBase\n(Unified Wrapper)] as WB
    [AsyncWorkInfo\n(State Linker)] as AWI
}

rectangle "Execution Engine" as EE #E8F5E9 {
    [Worker Threads\n(Executors)] as Workers
    [PowerPool\nSynchronizationContext] as PPSC
}

' User Interactions
User --> QSync
User --> QAsync
User --> Ctrl
User --> Fetch

' Creation & Identification
QSync --> WB : Creates
QAsync --> WB : Creates
WB -up-> WID : Identified by
Ctrl --> WID : Targets
Fetch --> WID : Queries

' Async Magic
QAsync .right.> AWI : Attaches
AWI -left-> WB : Links Continuations\n(BaseAsyncWorkID)

' Execution Flow
WB -left-> Workers : Dispatched to
Workers .up.> PPSC : Sets Context\n(If Async)
PPSC -right-> WB : Posts 'await' as\nNew WorkBase

@enduml

Clone this wiki locally