Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2014, 19:24   #1
corner
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 11
По умолчанию Сокеты и потоки

Здравствуйте. Пишу клиент-серверное приложение, где клиент отправляет серверу по локальной сети данные, сервер принимает их и должен извлечь соответствующую информацию из БД и отправить её клиенту.
Вопрос: нужно ли создавать отдельный поток для обращения к БД и отправки ответа клиенту?
corner вне форума Ответить с цитированием
Старый 17.11.2014, 19:31   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
нужно ли создавать отдельный поток для обращения к БД и отправки ответа клиенту?
И да, и нет. Смотря сколько будет одновременно подключено клиентов. Если более 32, то многопоточность в принципе не имеет смысла (или сделать ограничение в количестве одновременных соединений. Лучше воспользоваться пулом потоков
Lardes вне форума Ответить с цитированием
Старый 17.11.2014, 19:50   #3
corner
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 11
По умолчанию

Клиентов немного, до 7 шт.
corner вне форума Ответить с цитированием
Старый 17.11.2014, 19:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
многопоточность в принципе не имеет смысла (или сделать ограничение в количестве одновременных соединений. Лучше воспользоваться пулом потоков
Проясни что ты имеешь ввиду (для деревенщины).
Цитата:
нужно ли создавать отдельный поток для обращения к БД и отправки ответа клиенту?
Нужно или нет решать только тебе, нет стандартов для этого. Однако найудобной с моей точки зрения схемой будет создание потока на каждое подключение, и в этом же потоке работа с БД. Отдельный поток только для работы с БД наверное ничего не даст (Никакого выигрыша) а вот отдельный поток, который занимается запросом и ответом это уже то что нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2014, 20:10   #5
corner
Пользователь
 
Регистрация: 20.11.2011
Сообщений: 11
По умолчанию

т.е. получение данных клиента в одном потоке, а обращение к БД вместе с ответом клиенту в другом?)
corner вне форума Ответить с цитированием
Старый 09.12.2014, 22:21   #6
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 585
По умолчанию

Цитата:
т.е. получение данных клиента в одном потоке, а обращение к БД вместе с ответом клиенту в другом?)

Как-то так, правда лучше всего не создавать потоки каждый раз, а использовать пулл потоков, то есть создать их при старте приложения и вытаскивать с пула когда надо, после - очищать. Зачем? Создание потока берет много времени, а создание соединения с бд берет ещё больше времени, потому проще всегда держать соединие с бд открытым в пуле специальных ответных потоков.
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки. Закрываются все потоки при ошибке в одном. Son Общие вопросы Delphi 11 01.11.2013 09:32
Сокеты Toland2 Помощь студентам 0 10.10.2011 19:27
Потоки и сокеты divers Общие вопросы .NET 3 18.04.2010 15:08
Сокеты Pavelok Работа с сетью в Delphi 3 16.09.2009 16:57
сокеты cross Работа с сетью в Delphi 2 21.12.2006 18:12