@startuml hide footbox participant "E20 main thread" as main participant "tdm thread" as sub == an asynchronous event == sub <-- : an asynchronous event activate sub sub -> sub: calling thread callbacks in tdm-thread activate sub deactivate sub main <-- sub: sending an asynchronous event deactivate sub activate main main -> main: calling thread callbacks in main-thread activate main deactivate main deactivate main == a synchronous event == sub <-- : a synchronous event activate sub sub -> sub: calling thread callbacks in tdm-thread activate sub deactivate sub sub --> main: sending a synchronous event activate main sub -> sub: pthread_cond_wait activate sub main -> main: calling thread callbacks in main-thread activate main deactivate main main --> sub: pthread_cond_signal deactivate sub deactivate main deactivate sub @enduml