Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск потока из потока / 11 сообщений из 11, страница 1 из 1
20.10.2006, 06:45
    #34068344
MaximZaikin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
Добрый день. Такой вопрос есть приложение которое по старту создает поток в этом потоке крутится цикл слушает порт. Я хочу что бы в момент когда на порт кто то попадал стартовал еще один поток в котором будет идти обработка клиента.

Смысл примерно такой по нажатию на кнопу стартует поток который слушает порт. Это работает. Функция серверного потока кстати объявлена как static DWORD WINAPI и клиентского так же. Так вот из основного потока клиентская стартовать не хочет либо не компилится либо вылетает с треском.
Помогите плиз )))
...
Рейтинг: 0 / 0
20.10.2006, 08:19
    #34068424
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
У вас ошибка в пятнадцатой строке.
...
Рейтинг: 0 / 0
20.10.2006, 08:30
    #34068436
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
не об ошибке, а так немного оффтопа:
я так тоже пробовал, но логика эта очень порочная, имхо, и я от нее отказался. К примеру, если будет большое количество присланных данных от разных источников на этот порт, что, в свою очередь, порадит кучу новых потоков, уследить за которыми и их взаимодействием та еще головная боль, но автору виднее...
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
20.10.2006, 09:53
    #34068595
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
Cerebrumне об ошибке, а так немного оффтопа:
я так тоже пробовал, но логика эта очень порочная, имхо, и я от нее отказался. К примеру, если будет большое количество присланных данных от разных источников на этот порт, что, в свою очередь, порадит кучу новых потоков, уследить за которыми и их взаимодействием та еще головная боль, но автору виднее...

Согласен, но по другой причине. Количество потоков надо или ограничивать, или делать статичным, т.к. на расходы ресурсов синхронизации будет уходить неконтраллируемое, и возрастаемое в прогрессии время.
...
Рейтинг: 0 / 0
20.10.2006, 09:54
    #34068605
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
MaximZaikinТак вот из основного потока клиентская стартовать не хочет либо не компилится либо вылетает с треском.

Типа, "я пробовал, как попало, помогите". Значит, почитайте про потоки, что вам еще посоветовать?
...
Рейтинг: 0 / 0
20.10.2006, 10:02
    #34068624
MaximZaikin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
По части большого колличества потоков и трудностью за ними уследить, я тоже об этом думал и думаю решить это связными списками + сервисом который будет шнырять туда сюда и грохать не угодные.
...
Рейтинг: 0 / 0
20.10.2006, 10:10
    #34068646
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
MaximZaikinПо части большого колличества потоков и трудностью за ними уследить, я тоже об этом думал и думаю решить это связными списками + сервисом который будет шнырять туда сюда и грохать не угодные.

А не лучше, передовать данные о коннекте одному потоку? Или сделать 2: приемщик/передатчик и обратчик?
...
Рейтинг: 0 / 0
20.10.2006, 11:33
    #34069012
nts
nts
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
MaximZaikinПо части большого колличества потоков и трудностью за ними уследить, я тоже об этом думал и думаю решить это связными списками + сервисом который будет шнырять туда сюда и грохать не угодные.
Я когда то тоже пытался сделать через списки, хранил в них не только хэндлы тредов и клиентские сокеты, но и внутреннее состояние тредов, чтобы корректно их погасить на любом этапе. Геморрой с синхронизацией тот еще. При небольшом количестве тредов это хорошо работает, а при большом лучше пересмотреть архитектуру и отказаться от концепции каждому клиенту - по треду :).
...
Рейтинг: 0 / 0
20.10.2006, 11:44
    #34069093
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
ntsЯ когда то тоже пытался сделать через списки, хранил в них не только хэндлы тредов и клиентские сокеты, но и внутреннее состояние тредов, чтобы корректно их погасить на любом этапе. Геморрой с синхронизацией тот еще. При небольшом количестве тредов это хорошо работает, а при большом лучше пересмотреть архитектуру и отказаться от концепции каждому клиенту - по треду :).

При правельном построении гемороя должно не быть, а должны быть тормоза. :)
...
Рейтинг: 0 / 0
20.10.2006, 12:10
    #34069231
nts
nts
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
Было и то и то :) сначала геморой, потом тормоза
...
Рейтинг: 0 / 0
20.10.2006, 14:24
    #34069924
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск потока из потока
ntsБыло и то и то :) сначала геморой, потом тормоза

В болшенстве случаев причин гемороя всего 2.

1. Забыли изменить значение семафора в нужном месте.
2. Проверка занчения семафора и его установка
производятся за 2 операции, а не за одну.

А причина тормозов - параноидальное блокирование обьектов.

Попробую дать свой рецепт по этому поводу.

Делается класс управляющий блокировками на чтение и на запись.

1.при установке блокировки на чтение, могут чтать все, никто не может писать.
2. при установке блокировки на запись, пишет одни, никто не читает.

У меня такой подход занимет 3 семафора.

Все классы реализующие бизнес логику наследуются от класса блокировок
и в нужных местах методов вызываются
методы класса управляющего блокировками для устанавки и снятия необходимых типов блокировок на обьект.

Это тот случай где очень полезной фичей есть виртуальное наследование
когда для всей иерархии существует всего один обьект управляющий блокировками.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск потока из потока / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]