Re[2]: WSACleanup блокируется ???
От: pankov  
Дата: 17.09.04 07:01
Оценка:
Здравствуйте, butcher, Вы писали:

B>Почитайте этот
Автор: Michael Chelnokov
Дата: 24.01.03
топик, может поможет.


это я читал собственно так оно и сделано...

B>Вот ещё MSDN:

B>

B>If an application needs to quit while a blocking call is outstanding, the application must first cancel the blocking call with WSACancelBlockingCall then issue the WSACleanup call once control has been returned to the application.


и с MSDNом я тоже дружу . WSACancelBlockingCall относится к старой реализации винсокетов. Пробовал я делать этот вызов, но помочь он ничем не смог...

Наблюдается следующая картинка :

я вызвал shutdown и closesocket для всех сокетов, но иногда потоки в которых проходят прослушивание, чтение и запись не завершаются. А завершаться они должны по принципу : возвратилась ошибка, выйти из потока. Видимо не всегда происходят выходы. Забыл я еще упомянуть о факте работы rpc в сервере. Возможно rpc как то влияет и блокирует WSACleanup. Старый добрый MSDN не содержит к сожалению решений подобных ситуаций...

Может прибиение rpc как то блокирует сокеты приложения ??? Но почему первый WSACleanup проходит хорошо (он кстати пока не выгружает ws2_32.dll, а только лишь декремент выполняет), а второй блокируется (вот этот и выполняет выгрузку ws2_32.dll). Стоит отметить, что ранее я прибивал потоки через TerminateThread, но потом следуя рекомендации Дж.Рихтера сделал выход из потока внутри через rerurn. Раньше это все работало без rpc. Но пришла беда на нашу землю и .... о чем это я ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.