Support Multiple Threads for Linux and Darwin only.
winlinvip opened this issue · 4 comments
winlinvip commented
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:
- Remove multiple OS support, only for Linux(CentOS,Ubuntu,etc) and Darwin(macOS).
- Remove the examples and extensions.
- Remove the poll support, only Linux epoll and Darwin kqueue.
- Remove the support for multiple processes, for single process only.
- Stack always grows from top to down.
- Remove the deprecated serialize accept.
Then, we should use gcc __thread for multiple threads:
- Support gtest and gocv/gcovr coverage analysis.
- Change all global or static variables to __thread, see toffaletti befca4dfbd, 9b617a6a02, f0ebf18d8f, 527931ce8e.
- #31
winlinvip commented
UTest and coverage for ST is introduced by SRS#1b2822a5a4, of course, it'll be merged to this repository if done.
winlinvip commented
对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。