@famousman204

Как убрать зависания на сервере с помощью select?

Я написал прокси сервер. Сервер однопоточный, работает через select. У меня появился участок кода который блокирует сервер:
bool closeConnect = false;
	std::string req = _getReq(closeConnect, fd);
	try {
		_dbSock->init();
		_dbSock->connectTo();
	} catch (std::exception &e) {
		std::cerr << "DB sock: " << e.what() << std::endl;
		closeConnect = true;
	}
	if (!closeConnect) {
		send(_dbSock->getSocket(), req.c_str(), req.size(), 0);
		bool tmp;
		req.erase();
		req = _getReq(tmp, _dbSock->getSocket());
		std::cerr << req.size();
		send(fd, req.c_str(), req.length(), 0);
	}

Знаю что блокируется на моменте общения с бд, но не понимаю как поправить это? Пробовал сначала открыть сокет для дб, и добавить его в fd_set но, скорее всего я делал это как то не правильно, потому что вообще все переставало работать.
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы