powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / uv_queue_work (from libuv) делает что-то странное
1 сообщений из 1, страница 1 из 1
uv_queue_work (from libuv) делает что-то странное
    #39141397
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
встретил странность.. поток просто перестает выполнять задание в uv_queue_work

делаю тут сервер и симиэску на плюсах. в качестве реализации сервера выбрал libuv (реализацию можно менять). сделал такую фичу: можно сделать объект класса ответа на запрос, такой, чтобы определенный метод вызывался из пула потоков, а потом, после его завершения, вызывался метод ответа из основного потока. так можно например в пуле потоков загрузить какой-нибудь объект из базы в кеш, а потом уже отвечать.

у меня такой обработчик весит на / а на /dep весит кое-какая отладочная ин-фа (она просто сразу отвечает в основном потоке, uv_queue_work вызывается только в /). вобщем если зайти на / а потом, пока поток думает (несколько секунд std::this_thread::sleep) написать вконце /dep и нажать enter, то срабатывает ассерт, котрый не должен сработать.

смысл такой, что uv_queue_work принимает две функции - одна обрабатывается в пуле потоков, в каком-нибудь потоке, другая в основном потоке после того, как первая закончит работу. так вот этот ассерт проверяет, что срабатывает последняя строка в первом колбеке uv_queue_work - то есть что поток в пуле потоков дошел до последней строки. а не дойти он не мог. под отладчиком он её выполняет, вроде..

ссылки на код lines 144-158 - это лямбда выполняется в пуле
lines 159-179 - это в основном потоке
line 169 - это ассерт, который проваливается

там не заверенный сертификат :)


то есть получается что в asyncs_threads_ нет ни одного потока, со статусом JOB_DONE, но как такое может быть?
ассерт на строке 150 не проваливается, а больше нигде не может возникнуть исключение?

сейчас пытаюсь поставить нужный статус в деструторе специального объекта, но не помогает...
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / uv_queue_work (from libuv) делает что-то странное
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]