Здравствуйте, гость ( Вход | Регистрация )
|
mezmay |
27.11.2012, 23:53
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1
|
Для саморазвития решил написать чат с базой данных, многопоточностью и голосовой связью. Клиенты будут подключаться к серверу и все сообщения посылать через него. Как реализовать многопоточность в данном случае? Хорошо понимаю 2 варианта:
1. Один дополнительный поток. Он все время запущен, принимает коннекты и передает/принимает данные от всех клиентов, пишет в базу. 2. Один поток на каждое соединение. Запущен пока есть коннект, обменивается данными с одним клиентом ну и пишет в общую базу. 3. Хотелось бы услышать советы, ведь оба предложенных варианта нехорошие - первый плох тем, что будет перегружен один поток, а второй плох тем, что количество потоков зависит от количества подключений и может быть неоптимальным. Изучал документацию по пулу потоков в Qt, но так и не понял как его прикрутить к данной задаче, ведь надо сделать чтобы рабочий объект существовал в потоке в течении, как минимум, одного коннекта. Или может сразу создать несколько потоков и клиентов распихивать по ним?... Сообщение отредактировал mezmay - 27.11.2012, 23:57 |
|
|
|
Алексей1153 можно попробовать так:
1) поток с GUI (основной)
... 28.11.2012, 6:29
mezmay Я все-таки хочу использовать количество рабочих по... 29.11.2012, 13:30
Алексей1153 усложнения с настройкой количества потоков - сомни... 29.11.2012, 14:22
mezmay Ну допустим у нас по одному потоку на клиента - пр... 29.11.2012, 14:32
Алексей1153 в твоём классе-потоке сервера должен быть список п... 29.11.2012, 14:36
mezmay Да, сокеты хранить и найти нужный не проблема. Но ... 29.11.2012, 14:48
Iron Bug по-моему, тебе лучше разделить потоки на приём и о... 29.11.2012, 18:10
Алексей1153 Цитата(mezmay @ 29.11.2012, 17:48) Нельзя... 30.11.2012, 11:11
mezmay Из документации QAbstractSocket:
ЦитатаNote: It is... 30.11.2012, 15:26
Алексей1153 это сказано о том, что один экземпляр - один сокет... 30.11.2012, 19:56
Litkevich Yuriy Цитата(Алексей1153 @ 30.11.2012, 21:56) 1... 30.11.2012, 20:17
Алексей1153 ну, к примеру, это std::vector<uint8_t> или ... 30.11.2012, 20:22
mezmay Чат дорос до бета-версии, установил на работе, вот... 18.12.2012, 15:46
Iron Bug Цитата(mezmay @ 18.12.2012, 18:46) Чат до... 18.12.2012, 19:04
mezmay Начальник - свой человек, тоже в чате)) 18.12.2012, 19:11![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 23.12.2025, 5:07 |