Есть серверное приложение, хочу к нему добавить возможность изменение настроек/конфигураций "на лету" то есть без рестарта, с консоли вводятся команды на которые сервер сразу же реагирует.
C++ (Qt)
#include <QtCore/QCoreApplication>
#include "threadio.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int port = SettingsStorage::getInstance()->getValue("core/port").toInt();
int maxclients = SettingsStorage::getInstance()->getValue("core/maxclients").toInt();
int maxthreads = SettingsStorage::getInstance()->getValue("core/maxthreads").toInt();
CoreServer *coreServer = new CoreServer();
coreServer->setMaxPendingConnections(maxclients);
coreServer->initDaemon(port);
QThreadPool::globalInstance()->setMaxThreadCount(maxthreads);
...
return a.exec();
}
/*
Вариант 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
(типа невозможно управлять объектом из другого потока)
*/
как быть?