Название: QSocketNotifier ASSERT Error Отправлено: alexandros от Июнь 30, 2013, 19:41 Есть серверное приложение, хочу к нему добавить возможность изменение настроек/конфигураций "на лету" то есть без рестарта, с консоли вводятся команды на которые сервер сразу же реагирует.
Код
/* Вариант 1 (не работает) блокирует работу приложения, сервер не принимает запросы while(std::getline(std::cin,command)){ } */ /* Вариант 2 ThreadIO *tio = new ThreadIO(); tio->setCoreServer(coreServer); tio->start(); // тут и содержится while(std::getline(std::cin,command)){...} ссылка на объект сервера была через синглтон НО!!! вываливается следующее: QSocketNotifier: socket notifiers cannot be enabled from another thread (типа невозможно управлять объектом из другого потока) */ как быть? Название: Re: QSocketNotifier ASSERT Error Отправлено: xokc от Июль 01, 2013, 10:23 Транслировать команды, полученные внутри ThreadIO основному потоку (тому, в котором CoreServer создан) через сигнал/слоты. Т.е. в ThreadIO добавить сигнал commandReady(QString command), а в CoreServer соответствующий слот, и всю обработку команд делать непосредственно в CoreServer.
Название: Re: QSocketNotifier ASSERT Error Отправлено: alexandros от Июль 01, 2013, 21:03 В общем делается так:
Код
Код
Код
|