
Fork от http://sourceforge.net/projects/state-threads, исправлено для SRS.
См.: Https://github.com/ossrs/state-threads/blob/srs/readme
Для оригинального ST без каких -либо изменений проверьте ветвь St Master.
Государственные потоки лицензированы в соответствии с MPL или GPLV2.
Получить код:
git clone -b srs https://github.com/ossrs/state-threads.gitДля Linux:
make linux-debug Для Linux Aarch64, который терпит неудачу с Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Примечание: для получения дополнительной информации о архитектурах процессора, см. #22
Linux с Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Примечание: пользователь должен установить Valgrind, например, в Centos6
sudo yum install -y valgrind valgrind-devel.
Linux с Valgrind и Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Получить код:
git clone -b srs https://github.com/ossrs/state-threads.gitДля OSX:
make darwin-debugДля OSX пользователь должен указать файлы заголовка Valgrind:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Замечание: M1 не поддерживается ST, пожалуйста, используйте Docker для запуска, пожалуйста, прочитайте SRS#2747.
Получить код:
git clone -b srs https://github.com/ossrs/state-threads.gitДля Cygwin (Windows):
make cygwin64-debug
Замечание: Нативная сборка Windows сейчас не поддерживается.
SRS -SRS был исправлен и утончен:
MD_ST_NO_ASM чтобы отключить ASM, #8. Как отлаживать с GDB под Valgrind, прочитайте руководство Valgrind.
О параметрах запуска, прочтите Valgrind CLI.
Важные варианты CLI:
--undef-value-errors=<yes|no> [default: yes] , управляет тем, использует ли Мемчек использование ошибок неопределенных значений. Установите это на нет, если вы не хотите видеть ошибки неопределенных значений. Он также имеет побочный эффект от ускорения Мемчека.--leak-check=<no|summary|yes|full> [default: summary] , при включении, поиск утечек памяти, когда клиентская программа заканчивается. Если установлено для резюме, в нем говорится, сколько утечек произошло. Если установить на полную или да, каждая отдельная утечка будет подробно показана и/или подсчитывается как ошибка, как указано в опциях --show-leak-kinds и --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] , контролирует, отслеживает ли Мемхек происхождение неонициализированных значений. По умолчанию это не так, что означает, что, хотя он может сказать вам, что ненициализированное значение используется опасным образом, оно не может сказать вам, откуда взялась ненициализированная ценность. Это часто затрудняет отслеживание корневой проблемы.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , чтобы показать использование памяти. Примечание. Мы используем тест Google в
utest/gtest-fit.
Чтобы сделать ST с UTEST и запустить его:
make linux-debug-utest && ./obj/st_utest Обратите внимание, что GCC (4.8) Centos слишком стар, пожалуйста, используйте Docker ( ossrs/srs:dev-gcc7 ), чтобы запустить:
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 ' Примечание. Мы используем тест Google в
utest/gtest-fit.
Чтобы сделать ST с UTEST и запустить его:
make darwin-debug-utest && ./obj/st_utestПримечание. Мы используем тест Google в
utest/gtest-fit.
Чтобы сделать ST с UTEST и запустить его:
make linux-debug-gcov && ./obj/st_utest Обратите внимание, что GCC (4.8) Centos слишком стар, пожалуйста, используйте Docker ( ossrs/srs:dev-gcc7 ), чтобы запустить:
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 'Затем установите GCOVR для покрытия:
yum install -y python2-pip &&
pip install lxml && pip install gcovrНаконец, запустите тест и получите отчет:
bash auto/coverage.shПримечание. Мы используем тест Google в
utest/gtest-fit.
Чтобы сделать ST с UTEST и запустить его:
make darwin-debug-gcov && ./obj/st_utestЗатем установите GCOVR для покрытия:
pip install gcovrНаконец, запустите тест и получите отчет:
bash auto/coverage.shВведение: http://ossrs.github.io/state-threads/docs/st.html
Ссылка на API: http://ossrs.github.io/state-threads/docs/reference.html
Примечания по программированию: http://ossrs.github.io/state-threads/docs/notes.html
Как переносить ST в другую ОС/ЦП?
О SETJMP и LONDJMP, Читать SETJMP.
О структуре стека, чтении стека
О комментариях кода ASM, прочитайте #91D530E.
О планировщике, прочитайте #13-Scheduler.
О системе событий IO, прочитайте #13-IO.
Анализ кода, пожалуйста, прочитайте № 15.
Используйте Clion для открытого каталога государственных потоков.
Затем откройте ide/st_clion/CMakeLists.txt и нажмите Load CMake project .
Наконец, выберите конфигурацию для запуска или отладки.
Уинлин 2016