For WebRTC or UDP transport system, multiple threads or CPUs is essential important, please read ossrs/srs#2188
The first step, is to simplify the state-threads. We should remove the dead code for UDP server:
Then, we should use gcc __thread for multiple threads:
对ST做了大幅度简化:eda23b2
For #19: Simplify ST, only support LINUX and DARWIN
1. Remove examples and extensions.
2. Remove OS support, except LINUX and DARWIN.
3. Rename md.S to md_linux.S, remove __ia64__ support.
4. Remove events support, except kqueue and epoll.
5. Refine utest, add auto/fast.sh support.
简化前,一共是9123行,核心代码5834行:
homeMacOS:state-threads winlin$ wc -l *.h *.c *.S
480 common.h
645 md.h
176 public.h
1446 event.c
922 io.c
121 key.c
783 sched.c
173 stk.c
368 sync.c
644 md.S
76 md_darwin.S
5834 total
简化后,核心代码4448行:
homeMacOS:state-threads winlin$ wc -l *.h *.c *.S
473 common.h
232 md.h
174 public.h
913 event.c
815 io.c
121 key.c
751 sched.c
173 stk.c
368 sync.c
76 md_darwin.S
352 md_linux.S
4448 total
一共简化了1386行代码,23%左右代码。简化后,UTest和覆盖的难度降低了,之前存在大量无法覆盖的代码。
简化后,只支持LINUX和DARWIN平台,事件框架只支持kqueue和epoll。
For WebRTC or UDP transport system, multiple threads or CPUs is essential important, please read ossrs/srs#2188
The first step, is to simplify the state-threads. We should remove the dead code for UDP server:
Then, we should use gcc __thread for multiple threads:
对ST做了大幅度简化:eda23b2
简化前,一共是
9123行,核心代码5834行:简化后,核心代码
4448行:一共简化了1386行代码,23%左右代码。简化后,UTest和覆盖的难度降低了,之前存在大量无法覆盖的代码。
简化后,只支持LINUX和DARWIN平台,事件框架只支持kqueue和epoll。