powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
25 сообщений из 75, страница 3 из 3
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39849948
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devдостаточно запустить эту подсистему в разных потоках по количеству привязок

Мнда...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850055
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСделай патч, если это так тривиально - делов-то ...Не выйдет! Обёртка на виртуальных методах C++.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850059
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovrdb_devдостаточно запустить эту подсистему в разных потоках по количеству привязок
Мнда...Ты знаешь другой способ "слушать" сокеты? Я таких не знаю... Даже реализация под вендой через сообщения, мьютексы и т.д. является лишь обёрткой, работающей с сокетами в отдельном потоке через стандартный сишный API.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850062
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devТы знаешь другой способ "слушать" сокеты?

select() в одном потоке. Или WSAEventSelect(), но у него есть свои мухи на большом
количестве сокетов и высокой нагрузке. В свежих версиях они пилят epoll(), но он ещё глючит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850181
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, мелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал. На мой взгляд, лучше крутить опрос сокетов "вручную" и для разных привязок использовать разные потоки, чтобы вносить в имеющийся код меньше переделок и, в большинстве случаев, использовать один поток опроса на один буфер адаптера.

Ко всему прочему, вчера я наткнулся на конфликт firebird.conf, когда проверял соединение с отключенным шифрованием. Если клиенты для 2.5.9 и 4.0b1 находятся в одном каталоге под разными именами и там же лежит firebird.conf для 4.0b1, клиент 2.5.9 отказывается подключаться, но как только убираешь из файла firebird.conf все активные параметры, кроме тех, которых нет в 2.5.9 или вовсе удаляешь файл firebird.conf, то подключение происходит нормально. Казалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... Таким образом, параметр с привязками, игнорируемый клиентом и перекрывающий для сервера старые параметры привязки, стал бы решением.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850282
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devмелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал

А, значит ты как обычно писал нагугленную чушь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850297
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devКазалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... понимания изменений FB 3.0+ под виндой.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850322
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovrdb_devКазалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... понимания изменений FB 3.0+ под виндой.Я, таки, не понял, что ты имеешь в виду. Разве fbclient 2.5.x не хавает firebird.msg и firebird.conf каталогом выше, при том, что fbclient 3.0+ привычно хавает те же файлы в том же каталоге, где находится сам?
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850332
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovrdb_devмелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал
А, значит ты как обычно писал нагугленную чушь.Нет, это моё личное мнение исходя из наблюдений работы этой функции. Мелкософт упростила жизнь разработчикам, написав за них эту обёртку и собрав её в ту же библиотеку, что и Беркли сокеты - ws2_32.dll. Чудес не бывает...
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850339
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devэто моё личное мнение исходя из наблюдений работы этой функции

И тебя не смущает, что она оперирует очередью событий непосредственно из драйвера, а
потому несёт больше информации чем select(), который, по твоим словам, она оборачивает?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850345
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, из драйвера чего? Сетевой карты? Ты уверен в том, что тоже самое сообщение из драйвера насквозь прилетает в event object? Зачем же тогда функция WSAEventSelect переводит сокеты в nonblocking mode, если получает всю необходимую информацию прямо из драйвера?

"The WSAEventSelect function automatically sets socket s to nonblocking mode, regardless of the value of lNetworkEvents. To set socket s back to blocking mode, it is first necessary to clear the event record associated with socket s via a call to WSAEventSelect with lNetworkEvents set to zero and the hEventObject parameter set to NULL. You can then call ioctlsocket or WSAIoctl to set the socket back to blocking mode."
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850351
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЗачем же тогда функция WSAEventSelect переводит сокеты в nonblocking mode, если получает
всю необходимую информацию прямо из драйвера?

Хороший вопрос на который я не знаю ответа. А у тебя есть ответ зачем нужен неблокирующий
режим при использовании унутре select-а?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850357
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, конечно есть! Чтобы в цикле по сокетам дёргать POSIX функции сокетов, которые тут же возвращают состояние и анализируя эти состояния посылать те или иные windows messages соответствующим event objects.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850359
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

У него на любой вопрос всегда есть любой ответ.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850367
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, разница между WSAEventSelect() и select() лишь в том, что в первом случае ьы получаешь два параллельных цикла - в WSAEventSelect() и в WSAWaitForMultipleEvents(), а во втором случае - два последовательных цикла, первый, собственно, в select(), а второй - свой цикл, в котором нужно обработать массив после выхода из select().
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850369
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЧтобы в цикле по сокетам дёргать POSIX функции сокетов, которые тут же возвращают
состояние и анализируя эти состояния посылать те или иные windows messages соответствующим
event objects.

Прелестно, но в каком потоке крутится этот цикл и почему его не видно в стэке вызовов?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850375
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, как это "не видно"? WSAEventSelect крутит цикл в том же потоке из которого ты её вызвал.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850376
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devкак это "не видно"?

Да вот так: я смотрю в Call Stack моего процесса в Process Explorer и не вижу ни цикла, ни
потребляемых тиков процессора.

rdb_devWSAEventSelect крутит цикл в том же потоке из которого ты её вызвал.

WSAEventSelect вызывается для сокета ровно один раз и сразу возвращает управление мне.
Дальше всюду работает мой код.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850394
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovrdb_devкак это "не видно"?
Да вот так: я смотрю в Call Stack моего процесса в Process Explorer и не вижу ни цикла, ни
потребляемых тиков процессора.
rdb_devWSAEventSelect крутит цикл в том же потоке из которого ты её вызвал.

WSAEventSelect вызывается для сокета ровно один раз и сразу возвращает управление мне.
Дальше всюду работает мой код.
Возможно, я перепутал работу этой функции с работой какой-то другой обёртки сокетов от MS, но принципиально это ничего не меняет - всегда есть некий массив хэндлов сокетов, по которому в цикле кто-то пробегает и опрашивая состояния неблокируемых сокетов инициирует те или иные действия меняющие состояния неких структур, отражающих состояния сокетов, а как ты анализируешь эти состояния - пробегая по массиву fd_set или по массиву объектов WSAEVENT, это уже малосущественные детали реализации. Как я уже говорил - тут чудес не бывает (если ты не используешь собственный NDIS драйвер).
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850399
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devвсегда есть некий массив хэндлов сокетов, по которому в цикле кто-то пробегает и опрашивая
состояния неблокируемых сокетов инициирует те или иные действия меняющие состояния неких
структур, отражающих состояния сокетов

То есть вариант таблицы сокетов к которым внутри привязана очередь и эвент, которые
заполняются/взводятся непосредственно после приёма пакета тебе даже в голову не приходит?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850407
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, неа.
Само по себе ничего не взводится. Всегда где-то существует цикл, пробегающий по некоему ассоциативному массиву хэндлов неблокируемых сокетов и неких структур, в которых отмечается состояние сокетов.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850421
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, по всей видимости, WSAEventSelect() используется лишь как инструмент для добавления пары socket handle/event object к ассоциативному массиву некой обёртки, внутри которой и крутится цикл, опрашивающий состояния неблокируемых сокетов и меняющий состояния ассоциированных с ними event objects. Потому WSAEventSelect() и переводит сокеты в неблокируемый режим, чтобы у обёртки была возможность при вызове некоей внутренней реализации чего-то, похожего на вызов select() с параметром timeout, указывающим на TIMEVAL{0,0}.
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850613
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devКак я уже говорил - тут чудес не бывает (если ты не используешь собственный NDIS драйвер).Проблема только в том, что MS "кое-что меняла" и в драйверах и "вокруг них".
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850653
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, "кое-что" 1 , MS, конечно, меняла, а что-то 2 даже добавила, но тесной интеграции пользовательских процессов с ядром ждать точно не стоит.

---
1 What's New for Windows Sockets
2 Registered Input/Output (RIO) API Extensions
...
Рейтинг: 0 / 0
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
    #39850737
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryDimitry Sibiryakov, У него на любой вопрос всегда есть любой ответ.Тебя что-то смущает?
...
Рейтинг: 0 / 0
25 сообщений из 75, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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