
Bifurca desde http://sourceforge.net/projects/state-threads, parcheado para SRS.
Ver: https://github.com/ossrs/state-threads/blob/srs/readme
Para el ST original sin ningún cambio, consulte la rama ST Master.
State-Threads tiene licencia bajo MPL o GPLV2.
Obtener código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara Linux:
make linux-debug Para Linux Aarch64, que fallan con Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Nota: Para obtener más arquitecturas de CPU, consulte #22
Linux con Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Observación: El usuario debe instalar Valgrind, por ejemplo, en CentOS6
sudo yum install -y valgrind valgrind-devel.
Linux con Valgrind y Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Obtener código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara OSX:
make darwin-debugPara OSX, el usuario debe especificar los archivos de encabezado Valgrind:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Observación: M1 no es compatible con ST, por favor use Docker para ejecutar, lea SRS#2747.
Obtener código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara cygwin (Windows):
make cygwin64-debug
Observación: la construcción nativa de Windows no está compatible en este momento.
La rama SRS fue parcheada y refinada:
MD_ST_NO_ASM para deshabilitar ASM, #8. Cómo depurar con GDB bajo Valgrind, lea el manual de Valgrind.
Acerca de los parámetros de inicio, lea Valgrind CLI.
Opciones de CLI importantes:
--undef-value-errors=<yes|no> [default: yes] , controla si MemCheck informa usos de errores de valor indefinidos. Establezca esto en no si no desea ver errores de valor indefinidos. También tiene el efecto secundario de acelerar un poco de Memcheck.--leak-check=<no|summary|yes|full> [default: summary] , cuando está habilitado, busque filtraciones de memoria cuando termine el programa del cliente. Si se establece en resumen, dice cuántas filtraciones ocurrieron. Si se establece en el total o sí, cada fuga individual se mostrará en detalle y/o se contará como un error, como se especifica por las opciones --show-leak-kinds y --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] , controla si MemCheck rastrea el origen de los valores no inicializados. Por defecto, no lo hace, lo que significa que, aunque puede decirle que se está utilizando un valor no inicializado de manera peligrosa, no puede decirle de dónde proviene el valor no inicializado. Esto a menudo hace que sea difícil rastrear el problema de la raíz.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , para mostrar el uso de memoria. Nota: Usamos Google Test en
utest/gtest-fit.
Para hacer St con UTest y ejecutarlo:
make linux-debug-utest && ./obj/st_utest Tenga en cuenta que el GCC (4.8) de CentOS es demasiado antiguo, use Docker ( ossrs/srs:dev-gcc7 ) para ejecutar:
docker run --rm -it -v $( pwd ) :/state-threads -w /state-threads
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev-gcc7
bash -c ' make linux-debug-utest && ./obj/st_utest ' Nota: Usamos Google Test en
utest/gtest-fit.
Para hacer St con UTest y ejecutarlo:
make darwin-debug-utest && ./obj/st_utestNota: Usamos Google Test en
utest/gtest-fit.
Para hacer St con UTest y ejecutarlo:
make linux-debug-gcov && ./obj/st_utest Tenga en cuenta que el GCC (4.8) de CentOS es demasiado antiguo, use Docker ( ossrs/srs:dev-gcc7 ) para ejecutar:
docker run --rm -it -v $( pwd ) :/state-threads -w /state-threads
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev-gcc7
bash -c ' make linux-debug-gcov && ./obj/st_utest 'Luego, instale GCOVR para cobrar:
yum install -y python2-pip &&
pip install lxml && pip install gcovrFinalmente, ejecute la prueba y obtenga el informe:
bash auto/coverage.shNota: Usamos Google Test en
utest/gtest-fit.
Para hacer St con UTest y ejecutarlo:
make darwin-debug-gcov && ./obj/st_utestLuego, instale GCOVR para cobrar:
pip install gcovrFinalmente, ejecute la prueba y obtenga el informe:
bash auto/coverage.shIntroducción: http://ossrs.github.io/state-threads/docs/st.html
Referencia de API: http://ossrs.github.io/state-threads/docs/reference.html
Notas de programación: http://ossrs.github.io/state-threads/docs/notes.html
¿Cómo portar ST a otro OS/CPU?
Acerca de SetJMP y LongJMP, Leer setJMP.
Sobre la estructura de la pila, lea pila
Sobre los comentarios del código ASM, lea #91D530E.
Sobre el planificador, lea #13-scheduler.
Sobre el sistema de eventos IO, lea #13-IO.
Análisis de código, por favor lea #15.
Use Clion para abrir el estado de directorio.
Luego, abra ide/st_clion/CMakeLists.txt y haga clic en Load CMake project .
Finalmente, seleccione una configuración para ejecutar o depurar.
Winlin 2016