Сервер
От: WHITELAMER Россия  
Дата: 07.12.05 21:37
Оценка:
Здравствуйте!
Я пишу на С++ с использованием Qt библиотеки.
Пишу сервер а если точнее то серверный движёк так чтоб на 1 проге можно было запустить несколько серверов.
я его сделал мульти клиентным т.е. класс сервер и скасс клиент и при коннекте создаются клиенты.
так вот я незнаю как сделать сервер мультипотоковым используя QThread.
а мультипотоковость нужна так как если чтонить случается с клиентом то виснет вся прога и все сервера а это ненужно.
вопрос в том кто знает как работать с QThread если есть какиенить доки или самплы буду рад.
попутныу вопрос если 1 из потоков упал(например зациклился) как его поймать и убить?

08.12.05 01:12: Перенесено модератором из 'C/C++' — Кодт
20.01.10 19:53: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Сервер
От: Аноним  
Дата: 08.12.05 10:41
Оценка:
Здравствуйте, WHITELAMER, Вы писали:

WHI>Здравствуйте!

WHI>Я пишу на С++ с использованием Qt библиотеки.
WHI>Пишу сервер а если точнее то серверный движёк так чтоб на 1 проге можно было запустить несколько серверов.
WHI>я его сделал мульти клиентным т.е. класс сервер и скасс клиент и при коннекте создаются клиенты.
WHI>так вот я незнаю как сделать сервер мультипотоковым используя QThread.
WHI>а мультипотоковость нужна так как если чтонить случается с клиентом то виснет вся прога и все сервера а это ненужно.
WHI>вопрос в том кто знает как работать с QThread если есть какиенить доки или самплы буду рад.
WHI>попутныу вопрос если 1 из потоков упал(например зациклился) как его поймать и убить?

Рекомендую ознакомиться с паттерном Client-Dispatcher-Server (Bushmann — Architectural patterns)
Ответ на попутный вопрос зависит от реализации и того что вы понимаете под словом "Упал" Вариантов тут может быть масса.
Re: Сервер
От: tiam Россия  
Дата: 08.12.05 14:03
Оценка:
Здравствуйте, WHITELAMER, Вы писали:

WHI>Здравствуйте!

WHI>Я пишу на С++ с использованием Qt библиотеки.
WHI>Пишу сервер а если точнее то серверный движёк так чтоб на 1 проге можно было запустить несколько серверов.
WHI>я его сделал мульти клиентным т.е. класс сервер и скасс клиент и при коннекте создаются клиенты.
WHI>так вот я незнаю как сделать сервер мультипотоковым используя QThread.
WHI>а мультипотоковость нужна так как если чтонить случается с клиентом то виснет вся прога и все сервера а это ненужно.
WHI>вопрос в том кто знает как работать с QThread если есть какиенить доки или самплы буду рад.
WHI>попутныу вопрос если 1 из потоков упал(например зациклился) как его поймать и убить?
Глянь примеры с Qt (%QTDIR%\examples\thread\ — lkz 3.3.4). Убить можно вызвав terminate()
Re[2]: Сервер
От: WHITELAMER Россия  
Дата: 09.12.05 10:48
Оценка:
Здравствуйте, tiam, Вы писали:


T>Глянь примеры с Qt (%QTDIR%\examples\thread\ — lkz 3.3.4). Убить можно вызвав terminate()

ок спасибо посмотрю только вот как обнаружить что один из потоков ушёл в бесконечный ваил или просто клиент повис?
и есть такой вариант он не видет класс потока потому как в ашке написанна такая строка
#if defined(QT_THREAD_SUPPORT)
что это такое и почему он на неё ругается (а нужна ли она вообще)
Qt я компилил полностью со всеми дополнительными функциями
Re[2]: Сервер
От: WHITELAMER Россия  
Дата: 09.12.05 11:01
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Рекомендую ознакомиться с паттерном Client-Dispatcher-Server (Bushmann — Architectural patterns)

А>Ответ на попутный вопрос зависит от реализации и того что вы понимаете под словом "Упал" Вариантов тут может быть масса.
А есть ссылка на этот паттерн?
а под словом "упал" а понимаю что он ущел в бесконечный цикл или повил клиент на другой стороне(у нас связь тут не очень хорошая и иногда ГТС виснет и вместе с ней виснет инет так как не приходит сообщения о дисконнекте я щлю данные клиенту и сервер виснет )
мне неабходимо распознать что поток к которому привязан клиент висит и уничтожить его (причём не вожно что случилось или случится с клиентом)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.