Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

закрытие сокета другого потока [Win2k, WinXP]


Страницы:   1 2

Ketmar ©   (2006-07-26 19:16:00) 

суть такая: есть n потоков, которые активно читают/пишут в совкеты. прокси-сервер, короче. %-) сокеты -- блокирующие.
в один печальный момент надо пришибить все эти потоки. как можно быстрее. сейчас я просто закрываю все сокеты, с которыми работают эти потоки (из отдельного потока-наблюдателя %-). вроде работает (за исключением сокета, который ожидает в connect() -- эти долго-долго думают %-(( ).
понимаю, что варварство, но ничего более умного сочинить не могу.
собственно, вопрос в том, наступал ли кто-то на грабли при таком жёстком изврате? или никто подобный невежливый код не пишет?

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

(не совсем уверен, что это не в WinAPI надо было...)


Сергей М.   (2006-07-27 15:02:00) [21]

Удалено модератором


Медведъ   (2006-07-27 14:35:00) [22]

Удалено модератором
Примечание: Все что ниже удалено - Оффтоп...


Ketmar   (2006-07-27 10:13:00) [23]

Удалено модератором
Примечание: Оффтоп...


Медведъ   (2006-07-27 09:35:00) [24]

Удалено модератором
Примечание: Оффтоп...


Ketmar   (2006-07-27 00:26:00) [25]

Удалено модератором
Примечание: Оффтоп...


tesseract   (2006-07-26 22:02:00) [26]

Удалено модератором
Примечание: Оффтоп...


Ketmar   (2006-07-26 20:56:00) [27]

>Медведъ   (26.07.06 19:55) [2]
а я как, по-твоему, сокеты юзаю, если не через winsock-API? %-)

а с одним неудобно. во-первых, я не люблю неблокирующие сокеты, во-вторых -- зачем писать транспортный диспетчер, если с этим отлично справляется сама винда при использовании потоков? больше 20-24 потоков у меня быть не может по-определению, не вижу смысла усложнять программу. %-) реально обычно активно 5-6 потоков. редко когда 8. проксь-то исключительно для личного использования.

более того: неблокирующий режим считаю извращением, рождённым в больных мозгах программеров некрософта. %-)


Медведъ   (2006-07-26 19:55:00) [28]

Windows имеет замечательный API, используй его
какой смысл мучать блокируюший режим, для прокси сервера вполне достаточно одного транспортного потока


Ketmar   (2006-07-26 19:20:00) [29]

тьфу. пока отправлял -- понял, что натупил. данные ходят небольшими порциями, и никто не мешает между порциями проверять любые флажки и условия.

однако для сокета, который "слушает", вижу только одно решение -- прекратить "слушать" в блокирующем режиме. (то есть, не "слушать", конечно, а "принимать"). придётся делать select() и вызывать accept() только если кто-то пришёл. не хочется. но, видимо, других вариантов нет -- кроме кривых хаков. %-(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо