Экономия в 3 строки, но лишние мьютексы и нотифаер, там вроде какие-то особенности (особенно на Винде) при статическом деструкторе, поэтому тут минимум лишнего
Экономия в 3 строки, но лишние мьютексы и нотифаер, там вроде какие-то особенности (особенно на Винде) при статическом деструкторе, поэтому тут минимум лишнего
тут не про экономию, а про то что мьютекса не было. если бы работало хорошо я туда не лез бы. проблема в том что иногда тест падает в дестректоре с сегфолтом и сообщением corrupted size ... я не уверен что проблема тут, но после этих правок больше не падало.
на винде да - надо проверить - погонять тесты
тут не про экономию, а про то что мьютекса не было. если бы работало хорошо я туда не лез бы. проблема в том что иногда тест падает в дестректоре с сегфолтом и сообщением corrupted size ... я не уверен что проблема тут, но после этих правок больше не падало.
на винде да - надо проверить - погонять тесты
после вызова PIEthernet::listen(threaded=true) сервер ещё не стартанул и при попытке коннекта получаю ошибку. А с этим вызовом ошибка сильно реже, т.к. хотя бы поток сервера уже стартанул. По хорошему тут бы дождаться что сокет забиндили уже, тогда ошибок бы совсем не было. Пока поставил костыли в виде piMinSleep после PIEthernet::listen
после вызова PIEthernet::listen(threaded=true) сервер ещё не стартанул и при попытке коннекта получаю ошибку. А с этим вызовом ошибка сильно реже, т.к. хотя бы поток сервера уже стартанул. По хорошему тут бы дождаться что сокет забиндили уже, тогда ошибок бы совсем не было. Пока поставил костыли в виде piMinSleep после PIEthernet::listen
теперь эти тесты выполняются 600мс вместо 2600мс раньше, и всегда стабильны (раньше ~10% падало), проверял стабильность скриптом for i in {1..100}; do echo -n "."; ctest --test-dir build/tests -R ClientServer.DynamicClients --output-on-failure 2>&1 | grep -q "Failed" && echo " FAILED $i" && echo "FAIL!"; done; echo " All OK!"
теперь эти тесты выполняются 600мс вместо 2600мс раньше, и всегда стабильны (раньше ~10% падало), проверял стабильность скриптом
`for i in {1..100}; do echo -n "."; ctest --test-dir build/tests -R ClientServer.DynamicClients --output-on-failure 2>&1 | grep -q "Failed" && echo " FAILED $i" && echo "FAIL!"; done; echo " All OK!"`
peri4
merged commit 35140ee002 into master2026-03-18 11:08:49 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
@@ -77,3 +75,1 @@c->destroy();delete c;}closeAll();closeAll выполняет тоже самое но под мьютексом
Экономия в 3 строки, но лишние мьютексы и нотифаер, там вроде какие-то особенности (особенно на Винде) при статическом деструкторе, поэтому тут минимум лишнего
+ я не люблю менять что-то если нет прям нужды, работает хорошо, проверено
тут не про экономию, а про то что мьютекса не было. если бы работало хорошо я туда не лез бы. проблема в том что иногда тест падает в дестректоре с сегфолтом и сообщением corrupted size ... я не уверен что проблема тут, но после этих правок больше не падало.
на винде да - надо проверить - погонять тесты
ок
@@ -527,6 +527,7 @@ bool PIEthernet::listen(bool threaded) {listen_threaded = true;server_bounded = false;server_thread_.start(server_func);server_thread_.waitForStart();после вызова PIEthernet::listen(threaded=true) сервер ещё не стартанул и при попытке коннекта получаю ошибку. А с этим вызовом ошибка сильно реже, т.к. хотя бы поток сервера уже стартанул. По хорошему тут бы дождаться что сокет забиндили уже, тогда ошибок бы совсем не было. Пока поставил костыли в виде piMinSleep после PIEthernet::listen
зачем серверу вообще чего-то ждать? для тестов?? я как обычно
ага, это в тестах
@@ -148,3 +150,3 @@TEST(ClientServer, DynamicClients) {auto const loop_timeout = 100_ms;auto const loop_timeout = 10_ms;теперь эти тесты выполняются 600мс вместо 2600мс раньше, и всегда стабильны (раньше ~10% падало), проверял стабильность скриптом
for i in {1..100}; do echo -n "."; ctest --test-dir build/tests -R ClientServer.DynamicClients --output-on-failure 2>&1 | grep -q "Failed" && echo " FAILED $i" && echo "FAIL!"; done; echo " All OK!"