5 participant "E20 main thread" as main
\r
6 participant "tdm thread" as sub
\r
8 sub <-- : a synchronous event
\r
10 --> main: a synchronous event
\r
12 sub -> sub: calling thread callbacks in tdm-thread
\r
15 sub --> main: sending a synchronous event
\r
16 sub -> sub: pthread_cond_wait
\r
18 main -> main: calling thread callbacks in main-thread
\r
21 main --> sub: sending a synchronous event
\r
22 main -> main: pthread_cond_wait
\r
29 ... <color #red>(DEADLOCK)</color> ...
\r
31 * 만약 main-thread, tdm-thread에서 동시에 synchronous event가 발생되게 되면 deadlock발생됨
\r
32 - 양쪽에서 모두 pthread_cond_wait에서 대기
\r
33 * sync event는 한쪽 thread에서만 발생되도록 보장되어야 함.
\r
34 - tdm-thread -> main-thread방향으로만 sync event전달만 허용
\r
36 - backend에서 스스로 발생되는 event들만 가능
\r
37 - output status변경중에 connection/disconnection, virtual output creation/destruction
\r