Вернуться   CoderX :: Forums > Основные форумы > Курилка
Войти через OpenID

Курилка Флудим и шутим тут!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 03.04.2017, 06:09   #21
Местный
 
Регистрация: 22.10.2014
Сообщений: 122
Сказал Спасибо: 1
Имеет 8 спасибок в 7 сообщенях
alexov пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
идея в следующем (далее псевдокод):
Код:
переменные на каждый поток:
  общий_сетевой_буфер = массив байт равный максимальному размеру пакета (65535 в нашем случае)
  боты = список ботов для обработки

тело_потока:

для каждого бота в ботах потока делаем:
{
  бот.установить_буфер(общий_сетевой_буфер);
  // в этом моменте бот использует общий буфер потока
  // для приема и отправки данных
  бот.получить_сетевые_данные_используя_буфер();
  бот.послать_данные_используя_буфер();
  бот.аннулировать_буфер();
  // в этом моменте у бота больше нет буфера
  // в следующей итерации общий буфер перейдет к следующему боту
}
Повторюсь, экономить потоки это хорошая идея. Но делать это надо не так. В том что ты предлагаешь следующие проблемы:
1) ручная балансировка ботов между потоками
2) прием данных бывает либо блокирующий, что в твоем случае не подходит. либо асинхронный. что в твоем случае не подходит. либо активное ожидание - привет дополнительные задержки и излишний расход процессорного времени.

И снова мы приходим к тому что код должен быть полностью асинхронный. А в асинхронном коде ограничение на неразрывность обработки одного пакета является злом. Вот захочу я посреди обработки пакета отправить пакет другому клиенту, в этот момент я должен отпустить поток исполняющий мой код, и прощайте буфера.
alexov вне форума   Ответить с цитированием
 

  CoderX :: Forums > Основные форумы > Курилка



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:11.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!