config: not export tdm_config function to backend
[platform/core/uifw/libtdm.git] / doc / tdm_thread_deadlock.txt
1 @startuml\r
2 \r
3 hide footbox\r
4 \r
5 participant "E20 main thread" as main\r
6 participant "tdm thread" as sub\r
7 \r
8 sub <-- : a synchronous event\r
9 activate sub\r
10 --> main: a synchronous event\r
11 activate main\r
12 sub -> sub: calling thread callbacks in tdm-thread\r
13 activate sub\r
14 deactivate sub\r
15 sub --> main: sending a synchronous event\r
16 sub -> sub: pthread_cond_wait\r
17 activate sub\r
18 main -> main: calling thread callbacks in main-thread\r
19 activate main\r
20 deactivate main\r
21 main --> sub: sending a synchronous event\r
22 main -> main: pthread_cond_wait\r
23 activate main\r
24 deactivate sub\r
25 deactivate main\r
26 deactivate main\r
27 deactivate sub\r
28 \r
29 ... <color #red>(DEADLOCK)</color> ...\r
30 note over main, sub\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
35         * sync event의 종류\r
36                 - backend에서 스스로 발생되는 event들만 가능\r
37                 - output status변경중에 connection/disconnection, virtual output creation/destruction\r
38 end note\r
39 \r
40 @enduml\r