
Fork de http://sourceforge.net/projects/state-threads, corrigido para srs.
Veja: https://github.com/ossrs/state-threads/blob/srs/readme
Para ST original sem alterações, consulte a filial do ST Master.
O estado-threads é licenciado em MPL ou GPLV2.
Obtenha código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara Linux:
make linux-debug Para Linux Aarch64, que falha com Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Nota: Para mais arquiteturas da CPU, consulte #22
Linux com Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Observação: O usuário deve instalar Valgrind, por exemplo, no CentOS6
sudo yum install -y valgrind valgrind-devel.
Linux com Valgrind e Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Obtenha código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara OSX:
make darwin-debugPara o OSX, o usuário deve especificar os arquivos de cabeçalho Valgrind:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Observação: M1 não é suportado por ST, use o Docker para executar, leia o SRS#2747.
Obtenha código:
git clone -b srs https://github.com/ossrs/state-threads.gitPara Cygwin (Windows):
make cygwin64-debug
Observação: A construção nativa do Windows não está suportada agora.
A filial SRS foi corrigida e refinada:
MD_ST_NO_ASM para desativar o ASM, #8. Como depurar com o GDB sob Valgrind, leia o Manual Valgrind.
Sobre os parâmetros de inicialização, leia a CLI Valgrind.
Opções importantes da CLI:
--undef-value-errors=<yes|no> [default: yes] , controla se os relatórios do Memcheck são usos de erros de valor indefinidos. Defina isso como não, se você não quiser ver erros de valor indefinidos. Ele também tem o efeito colateral de acelerar um pouco o Memcheck.--leak-check=<no|summary|yes|full> [default: summary] , quando ativado, procure vazamentos de memória quando o programa do cliente terminar. Se definido como resumo, diz quantos vazamentos ocorreram. Se definido como completo ou sim, cada vazamento individual será mostrado em detalhes e/ou contado como um erro, conforme especificado pelas opções --show-leak-kinds e --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] , controla se o MemCheck rastreia a origem dos valores não inicializados. Por padrão, não, o que significa que, embora possa lhe dizer que um valor não inicializado está sendo usado de uma maneira perigosa, não pode dizer de onde veio o valor não inicializado. Isso geralmente dificulta o rastreamento do problema raiz.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , para mostrar a memória usando a memória. Nota: Usamos o teste do Google no
utest/gtest-fit.
Para fazer o ST com o utest e executá -lo:
make linux-debug-utest && ./obj/st_utest Observe que o GCC (4.8) do CentOS é muito antigo, use o Docker ( ossrs/srs:dev-gcc7 ) para executar:
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 o teste do Google no
utest/gtest-fit.
Para fazer o ST com o utest e executá -lo:
make darwin-debug-utest && ./obj/st_utestNota: Usamos o teste do Google no
utest/gtest-fit.
Para fazer o ST com o utest e executá -lo:
make linux-debug-gcov && ./obj/st_utest Observe que o GCC (4.8) do CentOS é muito antigo, use o Docker ( ossrs/srs:dev-gcc7 ) para executar:
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 'Em seguida, instale o GCOVR para cobertura:
yum install -y python2-pip &&
pip install lxml && pip install gcovrFinalmente, execute o teste e obtenha o relatório:
bash auto/coverage.shNota: Usamos o teste do Google no
utest/gtest-fit.
Para fazer o ST com o utest e executá -lo:
make darwin-debug-gcov && ./obj/st_utestEm seguida, instale o GCOVR para cobertura:
pip install gcovrFinalmente, execute o teste e obtenha o relatório:
bash auto/coverage.shIntrodução: http://ossrs.github.io/state-threads/docs/st.html
Referência da API: http://ossrs.github.io/state-threads/docs/reference.html
Notas de programação: http://ossrs.github.io/state-threads/docs/notes.html
Como portar ST para outro OS/CPU?
Sobre setjmp e longjmp, leia o setjmp.
Sobre a estrutura da pilha, leia a pilha
Sobre os comentários do código ASM, leia #91D530E.
Sobre o agendador, leia #13-Scheduler.
Sobre o sistema de eventos de IO, leia #13-Io.
Análise de código, leia #15.
Use o Clion para abrir o Directory State-Threads.
Em seguida, abra ide/st_clion/CMakeLists.txt e clique em Load CMake project .
Por fim, selecione uma configuração para executar ou depurar.
Winlin 2016