LINUX.ORG.RU

Снизить нагрузку на процессор в сетевом потоке.

 , ,


0

3

На сервере заводится отдельный поток на каждого клиента, знаю что плохо, но меня это сейчас устраивает. Камень нагружется до 50%. Нужно кроссплатформенное решение, которое бы убрало эту проблему. Boost использовать можно и нужно, заранее спасибо.

В потоке обработки клиента сейчас такой бред:

while(true)
{
  if (!socket->available())
  {
	std::this_thread::sleep_for(std::chrono::milliseconds(0));
	continue;
  }

  //работаем
}

★★
Ответ на: комментарий от anonymous

Мне не нужен высоконагруженный сервер в данной задаче. Когда будет нужен, тогда и буду его делать, к примеру через асинхронные сокеты. Сервер должен держать только несколько клиентов. Это у тебя нулевые знания, не порть настроение.

Booster ★★
() автор топика
Последнее исправление: Booster (всего исправлений: 2)
Ответ на: комментарий от Booster

если ты планируешь все же устраиваться нетворк программером, то нужно прокачать скилл, по созданию высоко нагруженных серверов, построение архитектуры итд итп, тупо что то слепить что бы как то работало + с помощу лора = это для чего? если это продолжения выполнения ТЗ то это феил. Прокачаешь скилл и сможешь попробовать податься в нормальную компанию для начала http://hh.ru/vacancy/13732468 http://hh.ru/vacancy/13849429 http://hh.ru/vacancy/14470653

anonymous
()
Ответ на: комментарий от hateyoufeel

Меня все устраивает, нужно только снизить загрузку цп. Я могу полинг и асинхронные сокеты сделать, но это просто не нужно в данной задаче.

Booster ★★
() автор топика
Ответ на: комментарий от Booster

нужно только снизить загрузку цп

Я могу полинг и асинхронные сокеты сделать, но это просто не нужно в данной задаче

Тогда заюзай green threads. Этого тут ещё не предлагали.

hateyoufeel ★★★★★★★★★☆
()
Ответ на: комментарий от Booster

Если по простому, то sleep пробовал не 0 ставить? Я в бусте не силен, не знаю что делает socket->available(). Но если сокет в большинстве случаев недоступен, то будет жор.

Dead ★★★★
()
Ответ на: комментарий от Booster

а кто решил что нужно в этой задаче? если бы я тебя нанимал на работу, то самое важное и нужное и за что действительно хочеться взять человека на работу, так это его умение правильно выстраивать архитектуру, а не просто налепить что бы это как то работало и показать - TASK DONE, - EPIC FAIL, таких говнокодеров пруд пруди, удивляйся дальше почему тебя никуда не берут

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.