Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки ввода/вывода select 
:(
    Опции темы
SuperYES
  Дата 4.2.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.6.2007

Репутация: нет
Всего: нет



Такой вопрос: Какие I/O потоки кроме сокетов можно использовать в функции select?

Проблема следующая (лаконичней не вышло): 

У меня есть сервер многопоточный, в каждом потоке стоит select.
Если например количество клиентов подключенных к выбранному потоку меньше 20например, то в список select добавляю listen socket, т.е. если поток не до конца забит клиентами то он может принимать еще клиентов. 
Если добавляется 20й клиент то убираю из селекта listen socket и создаю новый поток пустой в селекте которого установлен только listen socket. 
Если кто-то из забитого потока отключается, то ему сразу в select добавляется listen socket.

В результате происходит следующее, почти всегда listen сокет указан в нескольких потоках т.к. постоянно кто-то подключается, кто-то отключается и при получении accept запроса все потоки где в селекте есть listen socket активируются.
Хоть там кусок кода и синхронизирован т.е. только один из потоков подключит нового клиента, но происходит много лишних действий программы.

Дальше почесав корку я сделал отдельный поток для listen сокета и хотел заменить во вех селектах Listen  socket на какой-нить локальный I/O stream для каждого потока, тут и застрял.

В итоге должно быть так: при приеме сообщения accept не активируются все потоки, а активируется один поток, из списка не забитых потоков. А активировался бы он передачей в I/O stream чего-нибудь.

Вопрос как делать свои потоки не привязанные к сокетам, что-то типа отображаемых файлов в память, и главное чтоб эти потоки были понятны функции select?

Отпешите кто-что знает.
PM MAIL   Вверх
SuperYES
Дата 5.2.2008, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 25.6.2007

Репутация: нет
Всего: нет



Я немного покапался и нашел функцию pselect, которая дополнительно принимает список сигналов.
Вопрос знатокам C++, как ее использовать? Есть ли аналогия этой функции для windows?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.